C# での SqlBulkCopy によるデータ挿入の最適化
大規模なデータセットの場合、SQL Server データベースにデータを 1 行ずつ挿入するのは非効率です。 C# の SqlBulkCopy
クラスは、一括挿入操作の大幅に高速な代替手段を提供します。
一括挿入に SqlBulkCopy を利用する
SqlBulkCopy
は、単一の最適化されたトランザクションで大量のデータをデータベース テーブルに転送するように設計されています。 実装方法は次のとおりです:
<code class="language-csharp">using System.Data.SqlClient; // Establish connection and create SqlBulkCopy object using (var bulkCopy = new SqlBulkCopy(_connection.ConnectionString, SqlBulkCopyOptions.KeepIdentity)) { // Map DataTable columns to database columns foreach (DataColumn column in table.Columns) { bulkCopy.ColumnMappings.Add(column.ColumnName, column.ColumnName); } // Specify destination table bulkCopy.DestinationTableName = destinationTableName; // Set timeout (in seconds) to prevent timeouts on large datasets bulkCopy.BulkCopyTimeout = 600; // Perform the bulk copy operation bulkCopy.WriteToServer(table); }</code>
説明:
_connection.ConnectionString
: データベース接続文字列。table
: 挿入されるデータを含む DataTable
。destinationTableName
: SQL Server データベース内のターゲット テーブルの名前。重要な考慮事項:
DataTable
列名がデータベースの列名と正確に一致していることを確認してください。 異なる場合は、それに応じて ColumnMappings
を調整します。SqlBulkCopyOptions.KeepIdentity
は、DataTable
.BulkCopyTimeout
は、特に大量のデータセットにとって重要な操作のタイムアウトを防ぎます。 データ量とネットワークの状態に基づいて、必要に応じてこの値を調整します。この方法では、個々の行を挿入する場合と比べてデータベースの挿入速度が大幅に向上し、大規模なデータセットを処理する際のアプリケーションのパフォーマンスが大幅に向上します。
以上がC# を使用して SQL データベースに DataTable を効率的に一括挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。