ホームページ  >  記事  >  データベース  >  一時 CSV ファイルを使用して MySQL への DataTable の一括コピーを最適化する方法

一時 CSV ファイルを使用して MySQL への DataTable の一括コピーを最適化する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-24 06:11:02703ブラウズ

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

一時 CSV ファイルを使用して DataTable を MySQL に一括コピーする

Microsoft SQL Server から MySQL に移行する場合、一括コピーに関する問題が発生する可能性があります。 DataTable への直接書き込みを使用してコピーします。 SqlBulkCopy クラスは MySQL ではネイティブに使用できませんが、最適なパフォーマンスを得るために一時 CSV ファイルを仲介として使用することを検討する価値があります。

避けるべき仮定の 1 つは、CSV ファイルによる一括読み込みは本質的にパフォーマンスの低下につながるということです。パフォーマンス。実証テストの結果、MySqlBulkLoader クラスを使用すると、MySqlDataAdapter を介して直接更新する場合と比較して、挿入時間を大幅に短縮できることがわかりました。

これを実現するには、次の手順に従います。

  1. DataTable の内容を次の場所に書き込みます。適切な CSV ライターを使用して一時 CSV ファイルを作成します。
  2. 新しい MySqlBulkLoader オブジェクトを初期化し、そのプロパティを設定します:

    • ターゲット テーブルと一致するように TableName
    • CSV ファイルを指す FileName
    • 必要に応じて FieldTerminator と FieldQuotationCharacter
  3. Load() メソッドを呼び出して CSV ファイルからデータを一括ロードします
  4. 読み込みが完了したら、一時 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 への DataTable の一括コピーを最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。