SqlBulkCopyを使用して、あるテーブルのレコードを別のテーブルに一括挿入しています。クエリは、SqlDataReaderを使用してデータを取得しています。テーブル間で(マッピングで処理される列の順序の他に)重要な点の1つは、デスティネーションテーブルに現在の日付を追加する必要がある日付列があることです。この日付はソース表にありません。これを現在のプロセスに追加するにはどうしたらいいですか?
現在の作業コードは次のようになります。
SqlCommand cmd = new SqlCommand("SELECT * from dbo.source", cn);
SqlDataReader rdr = cmd.ExecuteReader();
using (SqlBulkCopy copy = new SqlBulkCopy(cn))
{
copy.ColumnMappings.Add(0, 0);
copy.ColumnMappings.Add(1, 2);
copy.ColumnMappings.Add(3, 3);
copy.ColumnMappings.Add(2, 4);
copy.ColumnMappings.Add(5, 5);
copy.ColumnMappings.Add(14, 6);
copy.DestinationTableName = "destination";
copy.WriteToServer(rdr);
}
DBはSQL 2008 ENTです。
あなたはそれをあなたのSELECTによって返されるように追加することができます:
SELECT *, GETDATE() AS CurrentDate from dbo.source
そして、別のColumnMappingを追加するだけです。