zoukankan      html  css  js  c++  java
  • .net Sql语句批量插入数据库数据

    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字段。

  • 相关阅读:
    easyui学习笔记3—在展开行内的增删改操作
    easyui学习笔记2—在行内进行表格的增删改操作
    4星|《贫穷的本质》:小额贷款对穷人帮助有限,助推政策也许是更好的
    科技类好书12本
    咨询公司等专业服务公司的权力结构:3星|《哈佛商业评论》第4期
    投资、投机、经济周期相关20本书,其中好书8本半
    3星|《进化:中国互联网生存法则》:点评十年来互联网公开大事
    黑洞有毛 or 黑洞无毛:4星|《环球科学》2019年03月号
    3星|《给产品经理讲技术》:APP开发技术介绍,没有技术背景的话恐怕只能看懂书中的比喻和结论
    2星|《为什么我们总是在逃避》:尝试用精神分析理论解释常见负面情绪
  • 原文地址:https://www.cnblogs.com/CielWater/p/3256516.html
Copyright © 2011-2022 走看看