そのシナリオでは、SqlBulkCopy
を使用します。 ステージングに挿入する テーブル (つまり、インポートしたいデータのように見えるが、メインのトランザクション テーブルの一部ではないもの)、そして DB で INSERT
に /SELECT
データを最初の実際のテーブルに移動します。
サーバーのバージョンに応じて、2 つの選択肢があります。 2 番目の INSERT
を実行できます /SELECT
2番目の実際のテーブルに、または INSERT
を使用できます /OUTPUT
テーブルの ID 行を使用して、2 番目の挿入を行う句。
例:
-- dummy schema
CREATE TABLE TMP (data varchar(max))
CREATE TABLE [Table1] (id int not null identity(1,1), data varchar(max))
CREATE TABLE [Table2] (id int not null identity(1,1), id1 int not null, data varchar(max))
-- imagine this is the SqlBulkCopy
INSERT TMP VALUES('abc')
INSERT TMP VALUES('def')
INSERT TMP VALUES('ghi')
-- now push into the real tables
INSERT [Table1]
OUTPUT INSERTED.id, INSERTED.data INTO [Table2](id1,data)
SELECT data FROM TMP