加速資料表到資料庫導入:最佳實務
將大型資料集從 DataTable 匯入資料庫需要有效的技術來最大限度地減少處理時間。雖然使用 foreach
循環進行逐行插入是一種常見方法,但對於大量資料集來說效率很低。
一個卓越的解決方案是SqlBulkCopy
,無需預存程序即可顯著提高效能。
實作SqlBulkCopy
相對簡單。 首先建立資料庫連接,利用 SqlBulkCopyOptions.KeepIdentity
保留識別列。
接下來,使用 ColumnMappings
屬性將 DataTable 欄位對應到對應的資料庫表格列。
最後,指定目標表並使用WriteToServer
方法傳輸DataTable資料。
這是一個說明 SqlBulkCopy
用法的程式碼範例:
<code class="language-csharp">using (var bulkCopy = new SqlBulkCopy(_connection.ConnectionString, SqlBulkCopyOptions.KeepIdentity)) { // Map columns between DataTable and SQL table foreach (DataColumn col in table.Columns) { bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName); } bulkCopy.BulkCopyTimeout = 600; // Increased timeout for large datasets bulkCopy.DestinationTableName = destinationTableName; bulkCopy.WriteToServer(table); }</code>
使用 SqlBulkCopy
可以顯著提高資料插入速度,從而在處理大型資料表時實現最佳效能。 請記得根據異常大的資料集的需要調整 BulkCopyTimeout
。
以上是如何優化將資料表插入資料庫以獲得最大速度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!