Jiro Laboratory

C#、ASP.NET、JavaScript、Androidとか

C#でテーブルコピーするなら SqlBulkCopy が速かった

テーブル構成や行数など、いろいろ条件はあると思いますが、万単位のデータをコピーするのであれば一度試してみてください。

var bc = new SqlBulkCopy(con);
bc.DestinationTableName = tableName;
bc.WriteToServer(dt);

con は接続オブジェクト、dt は DataTable*1です。
事前に DataTable に select しますが、列の並びがコピー先のテーブルに一致している必要がありますので注意してください。

タイムアウトしてしまう場合は、BulkCopyTimeout(ミリ秒)で設定できます。

bc.BulkCopyTimeout = 3000 * 1000;

*1:DataReaderも渡せるようです