В този сценарий бих използвал SqlBulkCopy
за вмъкване в инсцениция таблица (т.е. такава, която изглежда като данните, които искам да импортирам, но не е част от основните транзакционни таблици), и след това в DB към INSERT
/SELECT
за да преместите данните в първата реална таблица.
Сега имам два избора в зависимост от версията на сървъра; Мога да направя втори INSERT
/SELECT
към втората реална таблица, или мога да използвам INSERT
/OUTPUT
клауза, за да направите второто вмъкване, като използвате редовете за самоличност от таблицата.
Например:
-- 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