SQL Server でのバルク コピー操作

Microsoft SQL Server には、SQL Server データベースのテーブルまたはビューに大きなファイルを高速で一括コピーするための、bcp という一般的なコマンド ライン ユーティリティが用意されています。 SqlBulkCopy クラスを使用すると、同様の機能を提供するマネージ コード ソリューションを作成できます。 SQL Server のテーブルにデータを読み込むには、INSERT ステートメントを使用するなどの方法もありますが、SqlBulkCopy を使用すれば他の方法よりもパフォーマンス面で大幅に有利になります。

SqlBulkCopy クラスを使用すると、SQL Server のテーブルにのみデータを書き込むことができます。 ただし、データ ソースについては SQL Server に限定されているわけではありません。DataTable インスタンスのデータの読み込み、または、IDataReader インスタンスによるデータの読み取りであれば、任意のデータ ソースを使用することができます。

SqlBulkCopy クラスを使用すると、次のことを実行できます。

  • 単一の一括コピー操作

  • 複数の一括コピー操作

  • トランザクション内での一括コピー操作

Note

SqlBulkCopy クラスがサポートされていない、バージョン 1.1 以前の .NET Framework では、SqlCommand オブジェクトを使用して、SQL Server Transact-SQL SqlBulkCopy ステートメントを実行できます。

このセクションの内容

バルク コピー サンプルのセットアップ
バルク コピーの例で使用されるテーブルについて説明します。また、AdventureWorks データベースにテーブルを作成する SQL スクリプトを提供します。

バルク コピー操作の単一実行
SqlBulkCopy クラスを使用して、SQL Server のインスタンスにデータをバルク コピーする単一の方法を説明します。また、Transact-SQL ステートメントと SqlCommand クラスを使用したバルク コピー操作の実行方法も説明します。

バルク コピー操作の複数実行
SqlBulkCopy クラスを使用して、SQL Server のインスタンスにデータのバルク コピー操作を行う複数の方法を説明します。

トランザクションとバルク コピー操作
トランザクション内でのバルク コピー操作の実行方法を説明します。トランザクションのコミットやロールバックの方法も説明します。

関連項目