Может ли BCP копировать данные непосредственно из таблицы в таблицу? - PullRequest
3 голосов
/ 03 ноября 2010

У меня возникла ситуация, когда мне нужно скопировать несколько таблиц из одной БД SQL Server в отдельную БД SQL Server. Базы данных находятся в одном экземпляре. Таблицы, которые я копирую, содержат как минимум 4,5 миллиона строк и имеют размер около 40 ГБ и более.

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

Возможно ли это? Если да, то как?

РЕДАКТИРОВАТЬ. Причина, по которой мы не используем простую INSERT, заключается в том, что у нас ограничено пространство на диске журнала на сервере, которое исчезает почти мгновенно при попытке INSERT. Мы попробовали это сделать, но запрос быстро замедлился до скорости улитки, когда диск журнала заполнился.

Ответы [ 3 ]

6 голосов
/ 05 января 2013

из моего ответа на Резервное копирование на уровне таблицы

Я использую bcp.exe для создания резервных копий на уровне таблицы

для экспорта:

bcp "select * from [MyDatabase].dbo.Customer " queryout "Customer.bcp" -N -S localhost -T -E

для импорта:

bcp [MyDatabase].dbo.Customer in "Customer.bcp" -N -S localhost -T -E -b 10000

Как вы можете видеть, вы можете экспортировать на основе любого запроса, так что вы даже можете делать инкрементные резервные копии с этим.

2 голосов
/ 19 сентября 2015

Мастер импорта / экспорта SQL выполнит эту работу ... просто дважды подключитесь к одной и той же базе данных (источник и место назначения) и скопируйте одну таблицу в другую (пустую и проиндексированную), возможно, вы захотите указать, что поле ключа идентификатора автоматической идентификации следует игнорировать, еслисуществует.Этот подход работает для меня с таблицами более 1 млн. Записей.

2 голосов
/ 03 ноября 2010

BCP - для дампа в / чтения из файла. Используйте DTS / SSIS для копирования из одной БД в другую.

Вот документы BCP на MSDN

...