2012-01-18 13 views
3

すべてを、定義することなく、バルク・コピーを使用する方法 宛先表

私は次のようBulkCopy操作を持っている

strConnectionStringが定義されており、有効な接続文字列をある
// Convert the FlexGrid to a DataTable. 
DataTable currData = (DataTable)c1ErrFlexGrid.DataSource; 

// Insert the data into the database. 
SqlBulkCopy SqlBulkIns = new SqlBulkCopy(strConnString, SqlBulkCopyOptions.Default); 
SqlBulkIns.BatchSize = 5000; 
SqlBulkIns.DestinationTableName = String.Format("dbo.{0}", strTableName); 
SqlBulkIns.WriteToServer(currData); 

。これは、テーブルstrTableNameが存在し、フィールドが定義されているときに過去に正常に機能しています。実行時に定義されたDataTableでこのBulkCopy操作を実行することにしました。つまり、SQLで表構造を事前定義する必要はありません。これは可能ですか?もしそうなら、どうですか?

お時間をいただきありがとうございます。

+1

テーブルを作成し、そのデータテーブルからデータを一括してロードしたいのですか? (つまり、テーブルはSQL Serverには存在しません)。 –

+0

つまり、ユーザにテーブル名を尋ねると、あなたのプログラムは実際に 'c1ErrFlexGrid.DataSource'と同じスキーマを持つテーブルを作成してそれを作成しますか? – dsolimano

+0

はい両方とも正しいです... SQL Serverにテーブルが存在する場合、上記のコードは機能します。私はテーブルが現在存在しないときに、それを事前に定義することなく、 'DataTable'をSQL Serverに一括ロードする方法を知りたいと思います。 – MoonKnight

答えて

8

このSqlTableCreatorオブジェクトを使用して、データテーブルからSQLテーブルを作成し、一括挿入を実行することができます。

+0

素敵な図書館! (基本的に)それを示唆するつもりだった。怠け者は+1。 –

+0

+1これは実際に私がやったことです。 5日遅すぎるが、素晴らしい発見!ご協力いただきありがとうございます! – MoonKnight

+0

DBFファイルが絶えず変更されるとどうなりますか?私はそれに書き込む前にその場でテーブルを作成したいです。 – Si8

関連する問題