SqlBulkCopy主要功能是把其他数据源(数据行DataRow,数据表DataTable)的数据有效批量的导入到SQL Server或其他数据库表中的功能。SqlBulkCopy在应用到大批量数据的插入时很方便。

/// <summary>
/// 大批量插入数据 速度非常可与
/// </summary>
/// <param name="connString">数据库链接字符串</param>
/// <param name="tableName">数据库表名</param>
/// <param name="dt">DataTable</param>
public static void BulkCopy(string connString, string tableName, DataTable dt)
{using (SqlConnection conn = new SqlConnection(connString)){conn.Open();using (SqlTransaction transaction = conn.BeginTransaction()){using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, transaction)){bulkCopy.BatchSize = 2000;bulkCopy.BulkCopyTimeout = 300;bulkCopy.DestinationTableName = tableName;try{foreach (DataColumn col in dt.Columns){bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName);}bulkCopy.WriteToServer(dt);transaction.Commit();}catch (Exception ex){transaction.Rollback();throw ex;}finally{conn.Close();}}}}
}也可以这么写/// <summary>
/// 大批量插入数据 速度非常可与
/// </summary>
/// <param name="connString">数据库链接字符串</param>
/// <param name="tableName">数据库表名</param>
/// <param name="dt">DataTable</param>
public static void BulkCopy(string connString, string tableName, DataTable dt)
{using (SqlConnection conn = new SqlConnection(connString)){conn.Open();using (SqlTransaction transaction = conn.BeginTransaction()){using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, transaction)){bulkCopy.BatchSize = 2000;bulkCopy.BulkCopyTimeout = 300;bulkCopy.DestinationTableName = tableName;try{bulkCopy.ColumnMappings.Add("A", "A");bulkCopy.ColumnMappings.Add("B", "B");bulkCopy.ColumnMappings.Add("C", "C");bulkCopy.WriteToServer(dt);transaction.Commit();}catch (Exception ex){transaction.Rollback();throw ex;}finally{conn.Close();}}}}
}**转换   List<T> 转 DataTable.**
   /// <summary>/// List<T> 转 DataTable./// </summary>private DataTable ToDataTable<T>(List<T> items){var tb = new DataTable(typeof(T).Name);PropertyInfo[] props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);foreach (PropertyInfo prop in props){Type t = GetCoreType(prop.PropertyType);tb.Columns.Add(prop.Name, t);}foreach (T item in items){var values = new object[props.Length];for (int i = 0; i < props.Length; i++){values[i] = props[i].GetValue(item, null);}tb.Rows.Add(values);}return tb;}/// <summary>/// 判断是否为空/// </summary>public static Type GetCoreType(Type t){if (t != null && IsNullable(t)){if (!t.IsValueType){return t;}else{return Nullable.GetUnderlyingType(t);}}else{return t;}}/// <summary>///判断是否为空/// </summary>public static bool IsNullable(Type t){return !t.IsValueType || (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(Nullable<>));}欢迎转载

使用SqlBulkCopy批量插入数据库速度非常可以,本人用的是SQL service 五万条数据2秒相关推荐

  1. sql server 使用SqlBulkCopy批量插入数据库

    sql server sqlbulkcopy 批量数据插入数据库使用的是System.Data.SqlClient中的 SqlBulkCopy批量数据插入数据库 sql server 使用SqlBul ...

  2. SqlBulkCopy批量插入数据库

    今天发现了一个超级快速插入大量数据到数据库的方法SqlBulkCopy,由于我这里是读Excel文件,所以我这里会提及到处理空行的方法和读取Excel的方法.下面我们会通过数据库跟踪器跟踪数据库发生了 ...

  3. 教你急速快速批量插入1000万条数据到mysql数据库表面试题

    急速快速批量插入1000万条数据到mysql数据库表面试题 教你急速快速批量插入1000万条数据到mysql数据库表&面试题 我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好 ...

  4. 绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来

    我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: ...

  5. 插入1000万条数据到mysql数据库表

    转自:https://www.cnblogs.com/fanwencong/p/5765136.html 我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入100 ...

  6. mysql 1000万数据读取_插入1000万条数据到mysql数据库表

    转自:https://www.cnblogs.com/fanwencong/p/5765136.html 我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入100 ...

  7. 力控数据写入mysQL_绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来...

    我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: ...

  8. java mysql 快速插入1000w条数据_教你88秒插入1000万条数据到mysql数据库表

    我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: ...

  9. 批量更新mysql数据(万条数据秒完成)

    1.常规方法,利用executemany批量更新数据(数据量小用这个就够了) import pymysql import pandas as pd conn = pymysql.connect(hos ...

最新文章

  1. python项目归纳总结-python excel常用方法归纳总结
  2. lvdt 运放全波整流接线方式_常见的几种二极管整流电路解析
  3. [New Portal]Windows Azure Cloud Service (33) 使用Visual Studio 2012 部署Cloud Service
  4. MyBatis 编程式开发中的核心对象及其作用?
  5. pytorch 实现 LSTM AutoEncoder 与案例
  6. 网站生成静态页面,及网站数据采集的攻、防原理和策略
  7. python服务端编程_Python实现的简单文件传输服务器和客户端
  8. SQL语句新手练习(一)
  9. 微博java版_新浪微博JAVA通用版
  10. 计算机键盘和实验原理图,独立键盘的检测原理及程序实现方法
  11. python求三位数每一位的和_输入一个三位数的整数,求这个三位数每一位上数字的和是多少。例如,输入: 382,输出:和为 13。 编写 Python 程序实现上述要求...
  12. minus 如何实现不去重效果
  13. 一个IT民工致女儿的一封信
  14. 正则匹配将字符串除首位和末尾以外的字符显示为*
  15. uboot源码学习(8)DDR内存时序参数
  16. 第26课:个人高效的秘籍 OKR 工作法
  17. python使用aip库识别图片中文字
  18. 【Lesson 6】 add2和弦
  19. c# IE浏览器清除缓存没用
  20. [C语言] 联想手机szb格式的制作工具,部分开源代码(仅提供程序思想);

热门文章

  1. 搞懂深度网络初始化(Xavier and Kaiming initialization)
  2. 平衡二叉树中点的数量
  3. influxDB 基础了解
  4. linux 文件夹 乱码,Linux 如何删除乱码文件名的文件或文件夹
  5. 全世界很难被揭穿的32条谣言,你被骗了多少
  6. 方舟生存进化联机显示没有找到服务器,方舟生存进化联机服务器怎么选_方舟生存进化联机服务器选择介绍-星芒手游网...
  7. 批量给文件名添加如 001、002 顺序的数字序号
  8. android禁止压缩壁纸,Android6.0 屏蔽壁纸功能
  9. layui添加复选框_layui表格数据复选框回显设置方法
  10. Python Excel第三方库——openpyxl