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

转载于:https://www.cnblogs.com/CielWater/p/3256516.html

你可能感兴趣的:(.net Sql语句批量插入数据库数据)