/// <summary>
/// 批量複製
/// </summary>
/// <param name="connectionString">目標表的數據庫連接字符串</param>
/// <param name="sourceTable">原表</param>
/// <param name="destinationTable">目標表名</param>
public static void ExecuteBulkCopy(string connectionString, DataTable sourceTable, string destinationTable)
{
using (SqlConnection sqlconn = new SqlConnection(connectionString))
{
sqlconn.Open();
using (SqlBulkCopy sbc = new SqlBulkCopy(sqlconn))
{
sbc.BatchSize = 1000;
sbc.BulkCopyTimeout = 180;
//將DataTable表名作爲待導入庫中的目標表名
sbc.DestinationTableName = destinationTable;
//將數據集合和目標服務器庫表中的字段對應
for (int i = 0; i < sourceTable.Columns.Count; i++)
{
//列映射定義數據源中的列和目標表中的列之間的關係
sbc.ColumnMappings.Add(sourceTable.Columns[i].ColumnName, sourceTable.Columns[i].ColumnName);
}
sbc.WriteToServer(sourceTable);
}
sqlconn.Close();
}
}
/// <summary>
/// 批量複製
/// </summary>
/// <param name="trans">事務</param>
/// <param name="sourceTable">數據源</param>
/// <param name="destinationTable">目標表名</param>
public static void ExecuteBulkCopy(SqlTransaction trans, DataTable sourceTable, string destinationTable)
{
using (SqlBulkCopy sbc = new SqlBulkCopy(trans.Connection, SqlBulkCopyOptions.KeepIdentity, trans))
{
sbc.BatchSize = 1000;
sbc.BulkCopyTimeout = 180;
//將DataTable表名作爲待導入庫中的目標表名
sbc.DestinationTableName = destinationTable;
//將數據集合和目標服務器庫表中的字段對應
for (int i = 0; i < sourceTable.Columns.Count; i++)
{
//列映射定義數據源中的列和目標表中的列之間的關係
sbc.ColumnMappings.Add(sourceTable.Columns[i].ColumnName, sourceTable.Columns[i].ColumnName);
}
sbc.WriteToServer(sourceTable);
}
}