C#往SqlServer批量插入数据的方法

以前插入大数据的时候都是一条一条的插入,由于电脑配置不行,有一次17万条数据用了半个小时才插入完成,那个蛋疼啊!

前面听杨中科老师的课,发现一个很好的东西,25万条数据配置好的电脑几秒钟就完成了,那是一个怎样神奇的代码呢? 

我借花献佛下,呵呵 都是杨中科老师写的  拿出来晒晒 勿喷

数据表T_Nums中有四个字段:

NumSection,AddressStr,NumType,AreaCode

然后从文本文件中读取输入到一个DataTable中,然后将DataTable插入数据库即可 速度实在是太快了

运行截图:

由于代码比较简单,没有写注释,有不懂的看帮助文档或者留言  不喜勿喷...

以下是代码:

string connStr = "Data Source=WADE-PC;Initial Catalog=Test;Persist Security Info=True;User ID=sa;Password=123456";
DateTime startTime = DateTime.Now;
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "文本文件(*.txt)|*.txt";
if (dialog.ShowDialog() == DialogResult.OK)
{
DataTable dt = new DataTable();
dt.Columns.Add("NumSection");
dt.Columns.Add("AddressStr");
dt.Columns.Add("NumType");
dt.Columns.Add("AreaCode");

IEnumerable<string> lines = File.ReadLines(dialog.FileName, Encoding.Default);
foreach (string str in lines)
{
string[] strs = str.Split('\t');
DataRow row = dt.NewRow();
row["NumSection"] = strs[0];
row["AddressStr"] = strs[1].ToString().Trim('"');
row["NumType"] = strs[2].ToString().Trim('"');
row["AreaCode"] = strs[3].ToString().Trim('"');
dt.Rows.Add(row);
}
using (SqlBulkCopy bulkCopy=new SqlBulkCopy(connStr))
{
bulkCopy.DestinationTableName = "T_Nums";
bulkCopy.ColumnMappings.Add("NumSection", "NumSection");
bulkCopy.ColumnMappings.Add("AddressStr", "AddressStr");
bulkCopy.ColumnMappings.Add("NumType", "NumType");
bulkCopy.ColumnMappings.Add("AreaCode", "AreaCode");
bulkCopy.WriteToServer(dt);
}

TimeSpan ts = DateTime.Now.Subtract(startTime);
MessageBox.Show("一共插入" + dt.Rows.Count + "条数据,用时:" + ts.ToString());

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值