ホームページ  >  記事  >  データベース  >  DataTable を MySQL に効率的に一括コピーするにはどうすればよいですか?

DataTable を MySQL に効率的に一括コピーするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-24 06:34:30625ブラウズ

How to Efficiently Bulk Copy DataTables to MySQL?

最適なパフォーマンスで DataTable を MySQL に一括コピー

Microsoft SQL Server から MySQL にプロジェクトを移行すると、データの一括コピーで課題が発生する可能性があります。これは、Microsoft のシステムにある一般的な SqlBulkCopy API が MySQL では直接利用できないためです。

一括コピーの代替手段

代替手段の 1 つは、MySqlBulkLoader クラスを使用することです。これには、データを CSV ファイルにエクスポートしてからインポートする必要があるため、パフォーマンスのボトルネックが発生する可能性があります。

MySqlDataAdapter を使用した最適化メソッド

ただし、より効率的なアプローチは次のとおりです。トランザクション内で MySqlDataAdapter の Update() メソッドを利用することで活用されます。このメソッドにより、構成可能な更新バッチ サイズでバッチ挿入が可能になり、実行時間を大幅に短縮できます。

コード例

MySqlDataAdapter アプローチを使用した最適化された例を次に示します。

<code class="csharp">using (MySqlTransaction tran = conn.BeginTransaction(System.Data.IsolationLevel.Serializable))
{
    using (MySqlCommand cmd = new MySqlCommand())
    {
        cmd.Connection = conn;
        cmd.Transaction = tran;
        cmd.CommandText = "SELECT * FROM testtable";
        using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
        {
            da.UpdateBatchSize = 1000;
            using (MySqlCommandBuilder cb = new MySqlCommandBuilder(da))
            {
                da.Update(rawData);
                tran.Commit();
            }
        }
    }
}</code>

MySqlBulkLoader との比較

MySqlBulkLoader を使用する場合と比較すると、MySqlDataAdapter アプローチの方が実行速度の点で優れています。 100,000 行の一括挿入を伴うテストでは、MySqlDataAdapter を使用した場合の実行時間は 30 秒でしたが、MySqlBulkLoader は 5 ~ 6 秒でプロセスを完了しました。

結論

DataTable を MySQL に効率的に一括コピーするには、トランザクション内で MySqlDataAdapter の Update() メソッドを使用することを検討してください。このアプローチでは、中間の CSV エクスポートおよびインポートを必要とせずに最適なパフォーマンスが提供され、その結果、より高速かつ効率的なデータ移行が実現します。

以上がDataTable を MySQL に効率的に一括コピーするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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