快速读取TXT几百万行数据, 然后插入到数据,SqlBulkCopy功能的确是有效率
public static void Main(string[] args)
{
string strPath = "F:\\Download\\600.txt";
int lines = 1;
Console.WriteLine("正在读取行数...."+DateTime.Now.ToString());
DataTable dt = new DataTable();
dt.Columns.Add("ID", System.Type.GetType("System.Int32"));
dt.Columns.Add("UserName",System.Type.GetType("System.String"));
dt.Columns.Add("Password", System.Type.GetType("System.String"));
dt.Columns.Add("Email", System.Type.GetType("System.String")); using (var sr = new StreamReader(strPath))
{
var ls = "";
while ((ls = sr.ReadLine()) != null)
{
if (ls.Contains("#"))
{
string[] templine = ls.Split('#');
if (templine.Length == 3)
{
DataRow item = dt.NewRow();
item["ID"] = lines;
item["UserName"] = templine[0].Trim();
item["Password"] = templine[1].Trim();
item["Email"] = templine[2].Trim();
dt.Rows.Add(item);
lines++;
}
}
}
} if (dt.Rows.Count > 0)
{
string strConnection = "server=localhost;database=Data;uid=sa;pwd=123456;Connect Timeout=50000";
SqlBulkCopyInsert(strConnection, "tb_csdn_data", dt);
} Console.WriteLine("结束读取行数" + dt.Rows.Count + "...." + DateTime.Now.ToString());
Console.ReadLine();
} public static void SqlBulkCopyInsert(string strConnection, string strTableName, DataTable dt)
{
try
{
using (SqlBulkCopy sqlRevdBulkCopy = new SqlBulkCopy(strConnection))
{
sqlRevdBulkCopy.BulkCopyTimeout = 50000;
sqlRevdBulkCopy.DestinationTableName = strTableName;
sqlRevdBulkCopy.NotifyAfter = dt.Rows.Count;
sqlRevdBulkCopy.WriteToServer(dt);
sqlRevdBulkCopy.Close();
}
}
catch (Exception ex)
{
throw (ex);
}
}
快速读取TXT几百万行数据, 然后插入到数据,SqlBulkCopy功能的确是有效率的更多相关文章
- Delphi 快速读取TXT 指定行的数据
http://blog.csdn.net/MichaelJScofield/article/details/41869785 Delphi 快速读取TXT 指定行的数据 分类:Delphi个人挫品 ( ...
- C# 数据批量插入到数据库SqlBulkCopy(源数据类型:List<T> Or DataTable)
/*_____________________ List<T>类型数据 To Sql_______________________________*/ /// <summary& ...
- mysql如果数据不存在,则插入新数据,否则更新的实现方法
mysql如果数据不存在,则插入新数据,否则更新的实现方法 //如果不存在,则插入新数据 $sql = "INSERT INTO {$ecs->table('cat_lang')} ( ...
- SQL 如何在自增列插入指定数据
SQL Server 中数据表往往会设置自增列,常见的比如说 首列的ID列. 往数据表插入新数据的时候,自增列是跳过的,无需插入即会按照设置的自增规则进行列增长.那么,如果我们想往自增列插入我们指定 ...
- 转载:mysql如果数据不存在,则插入新数据,否则更新的实现方法
转自:http://www.jb51.net/article/28885.htm //如果不存在,则插入新数据 $sql = "INSERT INTO {$ecs->table(‘ca ...
- 获得Oracle中刚插入的数据的ID(for produce)
在sql sever中实现插入数据的自动增长是很容易的,但是在oracle数据库中实现这一操作不是很容易,同时要想在.net中实现获取新插入数据的id,而 且不会出现读错的情况,就更显得困难了,为了解 ...
- matlab中读取txt数据文件(txt文本文档)
matlab中读取txt数据文件(txt文本文档) 根据txt文档不同种类介绍不同的读取数据方法 一.纯数据文件(没有字母和中文,纯数字) 对于这种txt文档,从matalb中读取就简单多了 例如te ...
- [C#]统计文本文件txt中的行数(快速读取)
快速统计文本文件中的行数( StreamReader.ReadLine() ): 测试代码如下: //读取txt文件中总行数的方法 public static int requestMethod(St ...
- Matlab读取txt中用空格分隔的数据文件到矩阵
转载...哪儿 忘记了 由于要做的项目中涉及到数据处理,初涉及到matlab.今天需要把一组只用空格分开的数据读取到一个三维矩阵,然后对这个矩阵进行处理. 思路是:首先用importdata读入txt ...
随机推荐
- Android adb连接后adb devices显示unauthorized解决办法
adb链接手机后,显示unauthorized.原因是命令所在目录不对,这个adb devices命令是在夜神模拟器目录下执行的,所以出现该问题,切换目录后解决: 如果切换目录后仍然不行:重启adb. ...
- pycharm连不上数据库:报警代码Connection to api@localhost failed. [08001] Could not create connection to d
pycharm 换成2019之后连接数据库用户名密码数据库名字都没错,就是连接不上去,网上百度一下,试试将URL后面拼接 ?useSSL=false&serverTimezone=UTC 发现 ...
- python应用-彩票随机码的输出
""" 双色球-6个红色球(1-33)和一个蓝色球(1-16) """ from random import randint def sel ...
- cmds系统数据库源端大表数据更新优化
cmds系统数据库源端大表数据更新优化 以下脚本可以用于将表按照rowid范围分区,获得指定数目的rowid Extent区间(Group sets of rows in the table into ...
- Ubuntu只读文件系统修复方法
首先备份重要数据 fsck.ext4 -p /dev/sdb5 reboot
- Linux下用ls和du命令查看文件以及文件夹大小(转)
转自:https://www.cnblogs.com/xueqiuqiu/p/7635722.html ls的用法 ls -l |grep "^-"|wc -l或find ./co ...
- Vue——核心思想--mvvm
Vue的核心思想为数据驱动和组件化. 一.数据驱动——双向绑定 Vue是一种MVVM框架.而DOM是数据的一个种自然映射.传统的模式是通过Ajax请求从model请求数据,然后手动的触发DOM传入数据 ...
- IDEA连接数据库之后,无法自动找到表
在用IDEA连接数据库之后,在查询的时候无法自动关联出表,就如下图的提示所示: 这样看着很不舒服,按照如下设置就可以联想出表了: 点击第一个勾,关联所有: 然后就可以关联到表了
- Docker网络配置、Docker部署分布式项目
目标 1.Docker网络配置 2.Docker部署SpringCloud项目 Docker网络配置 Docker网络模式介绍 Docker在创建容器时有四种网络模式:bridge/host/cont ...
- TimeStamp( )函数, TimeStampAdd( )函数 , TimeStampDiff( )函数
官网:https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_timestampdiff TIMES ...