большая вставка в две таблицы.Первая таблица будет кормить вторую таблицу с ее сгенерированным идентификатором - PullRequest
1 голос
/ 28 июня 2010

Один вопрос о том, как запрограммировать t-sql следующий запрос:

Таблица 1 Я вставляю 400 000 номеров мобильных телефонов в таблицу с двумя столбцами.Номер для вставки и идентификатор личности.

Таблица 2 Вторая таблица называется SendList.Это список с 3 колонками, идентификатором, идентификатором списка и номером телефона.

Таблица 3 Называется ListInfo и содержит идентификатор списка PK.и информация о списке.

Мой вопрос: как мне использовать T-sql:

Вставить большой список с номерами телефонов в таблицу 1, вставить сгенерированный идентификатор из вставки phonenum.в таблице 1, в таблицу 2. И оптимизированным способом.Это не может занять много времени, это моя проблема.

Буду очень признателен, если кто-нибудь поможет мне в этом.

Спасибо

Себастьян

1 Ответ

1 голос
/ 28 июня 2010

Какую версию SQL Server вы используете?Если вы используете 2008, вы можете использовать предложение OUTPUT для вставки нескольких записей и вывода всех записей идентификаторов в табличную переменную.Затем вы можете использовать это для вставки в дочерние таблицы.

DECLARE @MyTableVar table(MyID int);
INSERT MyTabLe (field1, field2)    
OUTPUT INSERTED.MyID
        INTO @MyTableVar
select Field1, Field2 from MyOtherTable where field3 = 'test'

- Показать набор результатов переменной таблицы.

Insert MyChildTable (myID,field1, field2)
Select MyID, test, getdate() from @MyTableVar

Я не пробовал это напрямую смассовая вставка, но вы всегда можете добавить bulkinsert к промежуточной таблице и затем использовать процессы, описанные выше.Вставка групп записей выполняется намного быстрее, чем по одной за раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...