在 C# 中使用 SqlBulkCopy 最佳化資料插入
對於大型資料集,將資料逐行插入 SQL Server 資料庫中效率很低。 C# 中的 SqlBulkCopy
類別為批次插入操作提供了更快的替代方案。
利用 SqlBulkCopy 進行大量插入
SqlBulkCopy
旨在透過單一最佳化交易將大量資料傳輸到資料庫表。 實作方法如下:
<code class="language-csharp">using System.Data.SqlClient; // Establish connection and create SqlBulkCopy object using (var bulkCopy = new SqlBulkCopy(_connection.ConnectionString, SqlBulkCopyOptions.KeepIdentity)) { // Map DataTable columns to database columns foreach (DataColumn column in table.Columns) { bulkCopy.ColumnMappings.Add(column.ColumnName, column.ColumnName); } // Specify destination table bulkCopy.DestinationTableName = destinationTableName; // Set timeout (in seconds) to prevent timeouts on large datasets bulkCopy.BulkCopyTimeout = 600; // Perform the bulk copy operation bulkCopy.WriteToServer(table); }</code>
說明:
_connection.ConnectionString
:您的資料庫連接字串。 table
:包含要插入的資料的 DataTable
。 destinationTableName
:SQL Server 資料庫中目標表的名稱。 重要注意事項:
DataTable
列名稱與資料庫列名稱精確匹配。 如果它們不同,請相應地調整 ColumnMappings
。 SqlBulkCopyOptions.KeepIdentity
保留 DataTable
中的身分列值。 BulkCopyTimeout
防止操作逾時,這對於大量資料集尤其重要。 根據您的資料量和網路狀況按需調整此值。 與單行插入相比,該方法極大地提高了資料庫插入速度,顯著提高了處理大型資料集時的應用程式效能。
以上是如何使用 C# 有效率地將 DataTable 批次插入 SQL 資料庫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!