针对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; } } } }