DataTable からデータベースへのインポートの高速化: ベスト プラクティス
大規模なデータセットを DataTable からデータベースにインポートするには、処理時間を最小限に抑えるための効率的な手法が必要です。 foreach
ループを使用した行ごとの挿入は一般的なアプローチですが、大量のデータセットの場合は非効率です。
優れたソリューションは SqlBulkCopy
で、ストアド プロシージャを必要とせずにパフォーマンスが大幅に向上します。
SqlBulkCopy
の実装は比較的簡単です。 まずデータベース接続を作成し、SqlBulkCopyOptions.KeepIdentity
を利用して ID 列を保持します。
次に、ColumnMappings
プロパティを使用して、DataTable 列を対応するデータベース テーブルの列にマップします。
最後に、宛先テーブルを指定し、WriteToServer
メソッドを使用して DataTable データを転送します。
SqlBulkCopy
の使用法を示すコード例を次に示します。
<code class="language-csharp">using (var bulkCopy = new SqlBulkCopy(_connection.ConnectionString, SqlBulkCopyOptions.KeepIdentity)) { // Map columns between DataTable and SQL table foreach (DataColumn col in table.Columns) { bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName); } bulkCopy.BulkCopyTimeout = 600; // Increased timeout for large datasets bulkCopy.DestinationTableName = destinationTableName; bulkCopy.WriteToServer(table); }</code>
SqlBulkCopy
を使用すると、データ挿入速度が大幅に向上し、大規模な DataTable を処理するときに最適なパフォーマンスが得られます。 非常に大きなデータセットの場合は、必要に応じて BulkCopyTimeout
を調整することを忘れないでください。
以上がデータベースへの DataTable の挿入を最適化して速度を最大化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。