1. #region 使用SqlBulkCopy
  2. public static bool ExecuteTransactionScopeInsert(DataTable dt, int batchSize)
  3. {
  4. int count = dt.Rows.Count;
  5. string tableName = "TestTable";
  6. int copyTimeout = 600;
  7. bool flag = false;
  8. try
  9. {
  10. using (SqlConnection cn = new SqlConnection(connectionString))
  11. {
  12. using (TransactionScope scope = new TransactionScope())
  13. {
  14. cn.Open();
  15. using (SqlBulkCopy sbc = new SqlBulkCopy(cn))
  16. {
  17. //服务器上目标表的名称
  18. sbc.DestinationTableName = tableName;
  19. sbc.BatchSize = batchSize;
  20. sbc.BulkCopyTimeout = copyTimeout;
  21. for (int i = 0; i < dt.Columns.Count; i++)
  22. {
  23. //列映射定义数据源中的列和目标表中的列之间的关系
  24. sbc.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);
  25. }
  26. sbc.WriteToServer(dt);
  27. flag = true;
  28. scope.Complete();//有效的事务
  29. }
  30. }
  31. }
  32. }
  33. catch (Exception ex)
  34. {
  35. LogHelper.Error(ex.Message);
  36. return false;
  37. }
  38. return flag;
  39. }
  40. #endregion
  41. ----------------------------------------------------------------------------------------------------------------------------
  42. 说明:

    BatchSize = 100000; 指示每10万条一个事务并提交

    BulkCopyTimeout = 60; 指示60秒按超时处理

    DestinationTableName = "dbo.TableB"; 指示将数据导入TableB表

    ColumnMappings.Add("valueA", "Value1"); 指示将内存中valueA字段与TableB中的Value1字段匹配

    WriteToServer(dt);写入数据库。其中dt是预先构建好的DataTable,其中包含valueA字段。

.net Sql语句批量插入数据库数据的更多相关文章

  1. SQL语句-批量插入表(表数据插表)

    批量插入表(表数据插表) ****1.INSERT INTO SELECT语句语句形式为:Insert into Table2(field1,field2,...) select value1,val ...

  2. 在SQL 语句批量替换数据库字符串的方法

    update table[表名] set Fields[字段名]=replace(Fields[字段名],'被替换原内容','要替换成的内容')update ProgInfo set JoinTime ...

  3. .net使用SqlBulkCopy类操作DataTable批量插入数据库数据,然后分页查询坑

    在使用SqlBulkCopy类操作DataTable批量插入数据,这种操作插入数据的效率很高,就会导致每一条数据在保存的时间基本一样,在我们分页查询添加的数据是,使用数据的添加时间来排序就会出现每页的 ...

  4. SQL语句往Oracle数据库中插入日期型数据(to_date的用法)

    Oracle 在操作数据库上相比于其他的 T-sql 有微小的差别,但是在插入时间类型的数据是必须要注意他的 to_date 方法,具体的情况如下: --SQL语句往Oracle数据库中插入日期型数据 ...

  5. MYSQL批量插入数据库实现语句性能分析

    假定我们的表结构如下 代码如下   CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( 50 ) NOT NULL, value ...

  6. SQL Server 批量插入数据的两种方法

    在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍 SQL Server支持的两种批 ...

  7. SQL Server 批量插入数据的两种方法(转)

    此文原创自CSDN TJVictor专栏:http://blog.csdn.net/tjvictor/archive/2009/07/18/4360030.aspx 在SQL Server 中插入一条 ...

  8. 转:SQL Server 批量插入数据的两种方法

    在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍SQL Server支持的两种批量 ...

  9. MYSQL批量插入数据库实现语句性能分析【转】 批量插入!程序里面对于数据库插入的功能尽量用【异步处理+批量插入+(事务)】

    假定我们的表结构如下 代码如下   CREATE TABLE example (example_id INT NOT NULL,name VARCHAR( 50 ) NOT NULL,value VA ...

随机推荐

  1. 阿里云Linux系统挂载数据盘

    Linux云服务器数据盘未做分区和格式化,我们可以根据以下步骤进行分区以及格式化操作. 目录 [隐藏]  1 查看数据盘 2 对数据盘进行分区 3 查看新的分区 4 格式化新分区 5 添加分区信息 6 ...

  2. 个人js类库mycool

    // JavaScript Document Sunbye 1.0 //getElementById //function start var $=function(_id){return docum ...

  3. delphi 时间格式操作

    FormatDateTime('yyyy-mm-dd hh:nn:ss',Now) FormatDateTime('hh:mm:ss:zz',Now) if (TimeOf(now) < pub ...

  4. AWS S3 API实现文件上传下载

    http://blog.csdn.net/marvin198801/article/details/47662965

  5. 【SAP BO】BOE 4.1版本新特性

    为了更好地向用户推广BusinessObjects BI 4.1版本的新特性,SAP公司宣布将在2012年中旬推出针对BusinessObjects BI 4.0的功能补丁程序(Feature Pac ...

  6. 【原】iOS学习46之第三方CocoaPods的安装和使用(通用方法)

    本文主要说明CocoaPods的安装步骤.使用说明和常见的报错即解决方法. 1. CocoaPods 1>  CocoaPods简介 CocoaPods是一个用来帮助我们管理第三方依赖库的工具. ...

  7. spring3.0注解

    一.前言 在日常的开发过程中,我们基本上都是采用注解的方式进行开发,提升开发的效率.不管是struts2.spring.hibernate.或者ibatis,这样方便开发,减少配置文件的数量:有益于团 ...

  8. HDU 3072 (强连通分量)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3072 题目大意:为一个有向连通图加边.使得整个图全连通,有重边出现. 解题思路: 先用Tarjan把 ...

  9. Android中有关relativeLayout 和EditText的一些属性

      http://www.cnblogs.com/jqyp/archive/2010/10/23/1859182.html RelativeLayout用到的一些重要的属性: 第一类:属性值为true ...

  10. UILabel 的属性(用法)方法

    Label 中常用的方法属性 UILabel *label =[[UILabel alloc]initWithFrame:CGRectMake(90, 100, 140, 40)];//设置Label ...