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

  • 相关阅读:
    Hibernate3 第一天
    Struts2第四天
    Struts2第二天
    Struts2第一天
    【剑指offer】数字在排序数组中出现的次数,C++实现
    【剑指offer】两个链表的第一个公共结点,C++实现
    【剑指offer】数组中的逆序对。C++实现
    [Python]定时任务框架 APScheduler
    [pandas] SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame
    alicode35-找出二叉搜索树的第2大的数
  • 原文地址:https://www.cnblogs.com/CielWater/p/3256516.html
Copyright © 2020-2023  润新知