質問:
以前は Microsoft SQL Server を使用しており、一括データ挿入SqlBulkCopy クラスを使用してシームレスに実行されました。パフォーマンスの懸念を考慮して、同様の機能を MySQL でどのように実現できますか?
答え:
仮定を避ける:
強調証拠に基づく意思決定の重要性について、この応答は、MySQL への一括ロードの前に DataTable を CSV ファイルに書き込むとパフォーマンスが低下するという仮定の間違いを暴きます。
MySqlBulkLoader は優れています:
一連のテストでは、MySqlBulkLoader クラスはトランザクション内での標準的な MySQL データ アダプターの更新を大幅に上回り、わずか 5 ~ 6 秒で 100,000 行の挿入を完了しました。
コード ソリューション:
MySqlBulkLoader を効果的に利用するには:
<code class="csharp">// Create a temporary CSV file string tempCsvFileSpec = @"C:\Users\Gord\Desktop\dump.csv"; using (StreamWriter writer = new StreamWriter(tempCsvFileSpec)) { Rfc4180Writer.WriteDataTable(rawData, writer, false); } // Perform bulk loading with MySqlBulkLoader var msbl = new MySqlBulkLoader(conn); msbl.TableName = "testtable"; msbl.FileName = tempCsvFileSpec; msbl.FieldTerminator = ","; msbl.FieldQuotationCharacter = '"'; msbl.Load(); // Cleanup System.IO.File.Delete(tempCsvFileSpec);</code>
以上がMySqlBulkLoader を使用して DataTable から MySQL への一括データ読み込みを最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。