ホームページ >データベース >mysql チュートリアル >SqlBulkCopy を使用してオブジェクトのリストから SQL Server への一括挿入を効率的に実行するにはどうすればよいですか?

SqlBulkCopy を使用してオブジェクトのリストから SQL Server への一括挿入を効率的に実行するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-03 18:43:40968ブラウズ

How Can I Efficiently Perform Bulk Inserts into SQL Server from a List of Objects using SqlBulkCopy?

オブジェクトのリストから SqlBulkCopy を使用して一括挿入を行う

SqlBulkCopy は、SQL Server に効率的にデータを挿入するための強力なツールです。多数のオブジェクトを処理する場合、この機能を利用するとパフォーマンスが大幅に向上します。データが List<> に保存される場合、潜在的な課題が 1 つ発生します。

カスタム IDataReader の実装

1 つのオプションは、データを公開するカスタム IDataReader を実装することです。リスト<> SqlBulkCopy と互換性のある形式で。ただし、このアプローチは時間とリソースを大量に消費する可能性があります。

FastMember を使用した代替アプローチ

効率と使いやすさが向上した代替ソリューションは、FastMember です。このライブラリを使用すると、List<> の直接変換が可能になります。 SqlBulkCopy で使用できる形式に変換します。

using(var bcp = new SqlBulkCopy(connection))
using(var reader = ObjectReader.Create(data, "Id", "Name", "Description"))
{
    bcp.DestinationTableName = "SomeTable";
    bcp.WriteToServer(reader);
}

このコード スニペットでは、FastMember の ObjectReader コンポーネントが List<>> を変換します。オブジェクトを SqlBulkCopy に準拠したデータ ストリームに変換します。必要な列マッピング (「Id」、「Name」、「Description」など) を指定することで、データ転送プロセスを必要に応じてカスタマイズできます。

ObjectReader を使用する利点

ObjectReader を使用する利点は次のとおりです。

  • 手動による IDataReader 実装
  • DataTable ベースのアプローチと比較してパフォーマンスの向上
  • 汎用ソースと非汎用ソースの両方を操作できる柔軟性
  • より詳細な制御のための列マッピングのオプション指定

以上がSqlBulkCopy を使用してオブジェクトのリストから SQL Server への一括挿入を効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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