首頁  >  文章  >  資料庫  >  如何使用臨時 CSV 檔案優化將資料表批次複製到 MySQL 中?

如何使用臨時 CSV 檔案優化將資料表批次複製到 MySQL 中?

Linda Hamilton
Linda Hamilton原創
2024-10-24 06:11:02703瀏覽

How to Optimize Bulk Copying DataTables into MySQL Using a Temporary CSV File?

使用臨時CSV 檔案將資料表批次複製到MySQL

從Microsoft SQL Server 遷移到MySQL 時,您可能會遇到批次複製的挑戰使用直接DataTable 寫入進行複製。雖然 SqlBulkCopy 類別在 MySQL 中本身不可用,但值得考慮使用臨時 CSV 檔案作為中介以獲得最佳效能。

要避免的一個假設是透過 CSV 檔案批次載入本質上會導致效能不佳表現。經驗測試表明,與透過 MySqlDataAdapter 直接更新相比,使用 MySqlBulkLoader 類別可以顯著減少插入時間。

要實現此目的,請按照以下步驟操作:

  1. 將 DataTable 內容寫入使用適當的 CSV 編寫器的臨時 CSV 檔案。
  2. 初始化一個新的MySqlBulkLoader 物件並設定其屬性:

    • TableName 以符合目標表
    • FileName 指向CSV 檔案
    • 根據需要使用FieldTerminator 和FieldQuotationCharacter
  3. 呼叫Load() 方法批次載入CSV 檔案中的資料
  4. 載入完成後刪除臨時CSV
載入完成後刪除臨時CSV

<code class="csharp">string tempCsvFileSpec = @"C:\Users\Gord\Desktop\dump.csv";
using (StreamWriter writer = new StreamWriter(tempCsvFileSpec))
{
    Rfc4180Writer.WriteDataTable(rawData, writer, false);
}
var msbl = new MySqlBulkLoader(conn);
msbl.TableName = "testtable";
msbl.FileName = tempCsvFileSpec;
msbl.FieldTerminator = ",";
msbl.FieldQuotationCharacter = '"';
msbl.Load();
System.IO.File.Delete(tempCsvFileSpec);</code>
檔案

範例程式碼:利用MySQLBulkLoader類別和臨時CSV文件,可以實現DataTable的高效批量複製與直接更新相比,MySQL 的效能得到了提高。

以上是如何使用臨時 CSV 檔案優化將資料表批次複製到 MySQL 中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn