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

  • 相关阅读:
    一篇就搞懂Mysql存储引擎和索引的文章
    ShardedJedisPipeline中sync()和syncAndReturnAll()区别
    17.win10安装Nginx及负载均衡配置,实现代理访问内网机器
    iDempiere 使用指南 系统安装 以及 virtualbox虚拟机下载
    程序员学数学【整理】
    element 表单校验
    draggable 拖拽列表排序(指定被拖拽的子元素)
    导出多个表的excel文件
    js自定义鼠标的图片
    table 导出简单的excel
  • 原文地址:https://www.cnblogs.com/CielWater/p/3256516.html
Copyright © 2011-2022 走看看