ホームページ >データベース >mysql チュートリアル >MySQL でパフォーマンスを維持しながら DataTable の一括コピーを実現するにはどうすればよいでしょうか?
質問
Microsoft SQL Server から MySQL に移行する場合、どうすれば一括コピーできますかDataTable のコピーはパフォーマンスを犠牲にすることなく実現できますか?
回答
データを挿入する前に CSV ファイルへの書き込みを回避するのは直感的に思えるかもしれませんが、パフォーマンス ベンチマークはそうではないことを示しています。 MySqlBulkLoader クラスを使用して CSV ファイルからデータを一括ロードすると、MySqlDataAdapter を使用した直接挿入よりも大幅にパフォーマンスが向上します。
実装:
<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>
このコードは DataTable を次の場所にダンプします。一時 CSV ファイルを作成し、データを一括ロードしてから、ファイルを削除します。ベンチマークの結果、このアプローチでは、ファイル I/O 操作の時間を含めて、わずか 5 ~ 6 秒しかかからないことがわかりました。対照的に、MySqlDataAdapter を使用した直接挿入には約 30 秒かかります。
以上がMySQL でパフォーマンスを維持しながら DataTable の一括コピーを実現するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。