C# 超大数据量导入 SqlBulkCopy

 1         public static void ImportTempTableDataIndex(DataSet ds,string TempTableName,string strSqlConnection)
 2         {
 3 
 4             //dcrenl:获取写入连接
 5             string str = strSqlConnection;
 6             SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder(str);
 7             string DataSource = sb.DataSource;
 8             string PersistSecurityInfo = sb.PersistSecurityInfo.ToString();
 9             string Pwd = sb.Password;
10             string UserID = sb.UserID;
11             string basestr = sb.InitialCatalog;
12             string InitialCatalog = sb.InitialCatalog;
13 
14             //dcrenl:开始写入数据
15             str = $"Data Source={DataSource};database={basestr};user={UserID};password={Pwd}";
16             using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(str, SqlBulkCopyOptions.UseInternalTransaction))
17             {
18                 //DataSet与数据库表一一对应时不需要写对应关系
19                 //sqlBulkCopy.ColumnMappings.Add("ID", "ID");
20 
21 
22                 sqlBulkCopy.EnableStreaming = true;
23                 sqlBulkCopy.DestinationTableName = $"{TempTableName}";
24                 sqlBulkCopy.WriteToServer(ds.Tables[0]);
25 
26                 sqlBulkCopy.Close();
27             }
28             ds.Dispose();
29         }

 

此方法测试30万记录,20个varchar(255)字段,导入6秒左右完成。

posted @ 2020-04-29 15:03  dcrenl  阅读(407)  评论(0编辑  收藏  举报