首頁 > 資料庫 > mysql教程 > 如何使用 C# 有效率地將 DataTable 批次插入 SQL 資料庫?

如何使用 C# 有效率地將 DataTable 批次插入 SQL 資料庫?

Patricia Arquette
發布: 2025-01-07 22:13:43
原創
529 人瀏覽過

How Can I Efficiently Bulk Insert a DataTable into a SQL Database Using C#?

在 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板