ОБЪЕМНАЯ ВСТАВКА TMP TABLE sql server - PullRequest
0 голосов
/ 09 мая 2011

Можно использовать (оператор BULK INSERT) для вставки данных из временной таблицы в другую таблицу в базе данных?

Как я могу использовать эту операцию, поскольку во временной таблице содержится более 100 000 записей?

Спасибо

(sql server 2005)

Ответы [ 2 ]

2 голосов
/ 09 мая 2011

Нет, BULK INSERT только из файла.Вы можете выгрузить таблицу в файл и затем импортировать ее обратно с помощью массовой вставки.

Есть ли причина, по которой вы не можете просто вставить напрямую из временной таблицы в целевую таблицу?то есть INSERT INTO targetTable SELECT * FROM # tempTable

0 голосов
/ 09 мая 2011

Временная таблица, содержащая только 100 000 записей, должна быть вставлена ​​в другую таблицу очень быстро, конечно же, недостаточно долго для тайм-аута.Если у вас таймауты, у вас другая проблема.Сначала проверьте, есть ли у вас триггеры, которые запускают курсор или цикл, проверьте, есть ли в операторе импорта какие-либо коррелированные подзапросы, из-за которых он будет выполняться медленно, и проверьте, проиндексированы ли данные (можно индексировать временные таблицы, нотаблица переменных).Посмотрите на свой план выполнения, чтобы увидеть, где находится ботнелек.

Другой вариант - запускать партиями по 1000 - 10000 за раз (вы можете поэкспериментировать, чтобы увидеть, насколько большой пакет вы можете выбрать.)

...