在SQL Server中,SqlBulkCopy類用于高效地將大量數據從一個數據源快速地加載到另一個數據源。它可以將數據從一個表復制到另一個表,也可以從其他數據源(如DataTable、DataReader等)復制數據到SQL Server表。
下面是SqlBulkCopy類的用法示例:
string connectionString = "Data Source=(local);Initial Catalog=YourDatabase;Integrated Security=True";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
bulkCopy.DestinationTableName = "YourDestinationTable";
// 設置其他選項,如BatchSize和Timeout等
bulkCopy.BatchSize = 100;
bulkCopy.BulkCopyTimeout = 60;
// 將數據從源表復制到目標表
bulkCopy.WriteToServer(yourSourceDataTable);
}
}
在上述代碼中,yourSourceDataTable
是一個包含數據的DataTable對象,可以通過各種方式填充數據。
可以使用SqlBulkCopyOptions
枚舉來設置其他選項,如CheckConstraints
、FireTriggers
等。
可以使用ColumnMappings
屬性來映射源表的列和目標表的列,以確保數據正確地復制到目標表中。例如:
bulkCopy.ColumnMappings.Add("SourceColumn1", "DestinationColumn1");
bulkCopy.ColumnMappings.Add("SourceColumn2", "DestinationColumn2");
// ...
需要注意的是,SqlBulkCopy類在復制數據時是通過批量操作來實現的,因此在處理大量數據時,可以顯著提高性能。另外,使用SqlBulkCopy類時,目標表的結構必須與源表的結構兼容,否則會出現錯誤。