使用 SqlBulkCopy 加速 DataTable 資料庫插入
將大型資料集逐行插入資料庫的速度非常慢。 本文示範了一種更有效的方法:使用 SqlBulkCopy 一次插入整個 DataTable。
SqlBulkCopy:批次資料插入以增強效能
SqlBulkCopy 是 .NET System.Data.SqlClient 命名空間中的一個類,可實現高速批次資料插入。 透過優化資料傳輸和最小化資料庫交互,它的性能顯著優於單行插入。
實作:一個實際範例
使用 SqlBulkCopy 需要資料庫連接和正確配置的 SqlBulkCopy 物件。 以下程式碼片段說明了該過程:
<code class="language-csharp">using (var bulkCopy = new SqlBulkCopy(_connection.ConnectionString, SqlBulkCopyOptions.KeepIdentity)) { // Assumes DataTable and SQL table columns have matching names. foreach (DataColumn col in table.Columns) { bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName); } bulkCopy.BulkCopyTimeout = 600; // Timeout in seconds bulkCopy.DestinationTableName = destinationTableName; bulkCopy.WriteToServer(table); }</code>
解列映射差異
上面的範例假設 DataTable 和 SQL 表之間的列名稱相同。 如果不是這種情況,您需要在 ColumnMappings
集合中明確定義列映射,以確保準確的資料插入。
在插入列數少於目標 SQL 表的大型資料集時,此方法特別有用。 不符合的欄位將自動預設為 NULL 值。 透過使用 SqlBulkCopy,您可以顯著提高 DataTable 插入效能,避免迭代逐行方法的效能瓶頸。
以上是SqlBulkCopy如何最佳化DataTable資料庫插入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!