dataTable寫入數據庫(大數據寫入)


例1:

connectionStr,鏈接字符串
dataTableName, 數據庫中對應表名
sourceDataTable DataTable 要寫入數據庫的DataTable
字段要和表一致

public static void SqlBulkCopyByDataTable(string connectionStr, string dataTableName, DataTable sourceDataTable, int batchSize = 100000)
{
using (System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection(connectionStr))
{
using (System.Data.SqlClient.SqlBulkCopy sqlBulkCopy = new System.Data.SqlClient.SqlBulkCopy(connectionStr,
System.Data.SqlClient.SqlBulkCopyOptions.UseInternalTransaction))
{
try
{
sqlBulkCopy.DestinationTableName = dataTableName;
sqlBulkCopy.BatchSize = batchSize;
for (int i = 0; i < sourceDataTable.Columns.Count; i++)
{
sqlBulkCopy.ColumnMappings.Add(sourceDataTable.Columns[i].ColumnName, sourceDataTable.Columns[i].ColumnName);
}
sqlBulkCopy.WriteToServer(sourceDataTable);
}
catch (Exception ex)
{

throw ex;
}
}
}
}

 

例2:

  1. //省略連接字符串  
  2.  SqlConnection conn = new SqlConnection(".....");  
  3.  conn.Open();  
  4.  //初始化類  
  5.  using (System.Data.SqlClient.SqlBulkCopy sqlBC = new System.Data.SqlClient.SqlBulkCopy(conn))  
  6.  {  
  7.      //獲取需要導入的數據表  
  8.      DataTable dt = GetDataTable();  
  9.   
  10.      //每10W條數據一個事物  
  11.      sqlBC.BatchSize = 100000;  
  12.   
  13.      //超時時間  
  14.      sqlBC.BulkCopyTimeout = 60;  
  15.   
  16.      //表名Users  
  17.      sqlBC.DestinationTableName = "dbo.Users";  
  18.   
  19.      //字段對應,分表為原數據表字段名,和導入數據庫的字段名  
  20.      sqlBC.ColumnMappings.Add("Access_ID", "MSSQL_ID");  
  21.      sqlBC.ColumnMappings.Add("Access_Name", "MSSQL_Name");  
  22.      //sqlBC.ColumnMappings.Add("Access_...", "MSSQL_...");  
  23.      //sqlBC.ColumnMappings.Add("Access_...", "MSSQL_...");  
  24.   
  25.      //導入到數據庫  
  26.      sqlBC.WriteToServer(dt); 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM