Существует ли путь к объемной вставке в две таблицы с FK от одного до другого?

Я дам псевдопример кода своего существующего метода и если кто-либо знает о методе, который не работает одна строка за один раз, я был бы довольно благодарен. Я использую SQL Server MS 2008.

define cursor for the data to be inserted (about 3 million records)
loop
(
    insert record into table 1
    use scope_identity() to get key
    insert record into table 2 that references table 1
)

Я очень сделал бы своего рода вставку в обе таблицы одновременно, потому что курсор и цикл являются медленными.

Прежде чем любой будет разглагольствовать о том, почему я вставляю что-то в две отдельных таблицы, которое имеет от 1 до 1 отношения, это - потому что первая таблица не может быть изменена, и мне нужна информация во второй (временной) таблице для ссылки для операций преобразования данных позже.

Нет, я не могу добавить временный столбец для держания справочных данных к таблице, которая не может быть изменена, потому что это не может быть изменено. Это - живая система, и у меня нет полномочий изменить таблицу.

Спасибо!

Дополнительная информация:

Исключая

Source:

1 a big  monkey
2 a tall elephant
3 a big  giraffe
4 a tiny cow
5 a tall cow

Dest:

Table 1       Table 2
monkey        1 big
elephant      2 tall
giraffe       3 big
cow           4 tiny
cow           5 tall
7
задан Andriy M 30 September 2012 в 18:09
поделиться

1 ответ

При таком большом количестве данных лучшим вариантом может быть изоляция обновлений в системе, разрешение вставки идентификаторов и предварительная сварка ключей перед вставкой.


Или вы можете просто сделать первую вставку, а затем изменить вставку для второй (из временной таблицы), чтобы присоединиться к исходным данным и найти ключ.

0
ответ дан 7 December 2019 в 20:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: