针对MSSQL数据库,SqlBulkCopy处理大批量数据非常高效,可以将内存中的数据表直接一次性存储到数据库,而不需要一次一次的向数据库Insert数据。初次实验,百万级别的数据表,只需几秒时间,速度相当可观!笔记一下,以备后用。
/// <summary>
/// SqlBulkCopy批量处理大数据
/// </summary>
private void SqlBulkCopyByDatatable(string connectionString, string TableName, DataTable dt)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
using (SqlBulkCopy sqlbulkcopy =new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction))
{
try
{
sqlbulkcopy.DestinationTableName = TableName;
for (int i = 0; i < dt.Columns.Count; i++)
{
sqlbulkcopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);
}
sqlbulkcopy.WriteToServer(dt);
}
catch (System.Exception ex)
{
throw ex;
}
}
}
}

