SqlBulkCopy は、SELECT INTO のようなテーブルを作成できますか?
2 に答える
上記の答えはあまり明確ではなかったと思います。
SQL でテーブルを作成する必要があります。他に方法はありません。また、列構造を作成するだけでよい場合、ソースが同じサーバーにある場合は非常に簡単です。これを行うだけで十分です。
Select * from source_table into destination_table where 1=2
ソースが同じサーバーにない場合 (たとえば、Excel や dbf ファイルなど)、ODBC (または可能であれば SQL) を使用してソースに接続し、送信するのが最も簡単な方法です。
Select * from source_table where 1=2
結果を DataTable に収集します。次に、2番目のステップで、そのテーブルを引数として受け取り、それを新しいテーブルに挿入するストアドプロシージャを宛先サーバーに作成する必要があります。
もう少し正確には、SQL プロシージャでこれを試してください。 ,00.htm
そして、C# で SqlCommnand オブジェクトを作成し、その Parameters コレクションに SqlDbType.Structured である SqlParameter を追加します。
細かいところまでは書きませんが、参考になれば幸いです。
SqlBulkCopy だけではテーブルを作成できないようです。宛先テーブルは事前定義する必要があります。宛先が自動インクリメンタル ID (int) を取得している場合は、select ステートメントで 1 を使用するだけです。
SELECT
1,
[ColumnName],
[ColumnName]...
FROM TABLENAME
SQL Server は自動インクリメントを単独で処理します。