说来惭愧,关于批量导入数据,一直采用的是最原始的方式,一条一条插入,或者100条一块批量插入,这种方式,五十步笑百步,并没有明显的性能提升,

昨天在从别的库查询数据到DataTable内存中,然后插入另外一个库的时候,时间慢的要死,区区10W条数据,竟然要执行三分半。。。

声明一下,目标库是SQL Server。

百度了一下,SQLBulk闯入了我的视野,其实以前也了解过这个家伙,不过一直没有应用,

直接上代码。。。

 public int SqlBulkInsertForSQLServer(DataTable dt, string destionTable)
{
int ires = 0;
string costtime = "";
SqlBulkCopy bulkCopy = new SqlBulkCopy(ConnectionString);
bulkCopy.DestinationTableName = destionTable;
bulkCopy.BatchSize = dt.Rows.Count;
var watch = CommonHelper.TimerStart(); if (dt != null && dt.Rows.Count != 0)
{
bulkCopy.WriteToServer(dt);
}
bulkCopy.Close();
ires = dt.Rows.Count;
return ires;
}

  1.这个地方需要注意的是DataTable列的顺序,要跟目标库的列顺序一直,包括数据库字段类型。。。

2.有的时候报类型不一致,排查的时候发现类型一致,这个时候要去确认一下是不是少加列了,导致跟目标表的字段不一致。

SQL Server库,如果目标表有一个自增列的话,会出现问题,这种情况下建议先建个临时表,将数据导入后 ,再操作临时表插入目标表。

最新文章

  1. 从“差不多了”到 正式发布 -- 新浪微博WinPhone UWP版诞生记
  2. MySQL导入sql脚本错误:2006 - MySQL server has gone away
  3. 使用 JavaScript 实现链表
  4. 手把手教你修改iOS版QQ的运动步数
  5. IOS 免受xib自动布局影响
  6. EXTJS4.2 控件之Grid 根据数据源某列数据不同绑定不同的控件setEditor
  7. File System Shell
  8. [置顶] ios 水果连连看游戏源码
  9. [转] .bss段和.data段的区别
  10. 如何使用git创建项目,创建分支
  11. removeEventListener('2016');
  12. JavaEE HttpServlet 解析
  13. 使用 vue-i18n 切换中英文
  14. python的多线程
  15. aelf帮助C#工程师10分钟零门槛搭建DAPP&私有链开发环境
  16. M25P16中文版
  17. vue获取当前元素
  18. spring+shiro共享session完整小例子
  19. ES6---扩展运算符和rest‘...’(三点运算符),在数组、函数、set/map等中的应用
  20. 漏洞复现——apache文件解析漏洞

热门文章

  1. 微信小程序中 input组件影响页面样式的问题
  2. 使用JWT实现Token认证
  3. DataSet用法一:添加代码创建的表DataTable,设置主键外键,读取及修改DataSet表中数据
  4. poj 1066 Treasure Hunt 线段相交
  5. 广播broadcast的使用
  6. Arduino可穿戴教程ArduinoIDE新建编辑源文件
  7. SRM1153
  8. Java实验--关于英文短语词语接龙
  9. JavaScript的变量:变量提升
  10. php命令行查看扩展信息