Копировать данные из одной базы данных в другую - PullRequest
0 голосов
/ 16 июля 2009

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

Ответы [ 4 ]

2 голосов
/ 16 июля 2009

Вы можете использовать утилиту BCP для MSSQL Server 2000 или SSIS (службы интеграции SQL Server) из MSSQL 2005 или 2008.

2 голосов
/ 16 июля 2009
0 голосов
/ 17 июля 2009

Необработанный обходной путь: в SQL Server 2005 и более поздних версиях вы можете написать прямой оператор INSERT ... SELECT (используя связанные серверы, если они находятся в разных экземплярах SQL), а затем обернуть его в TRY / CATCH блок. Если это копирует, хорошо, если это терпит неудачу, ошибка поймана и обработана.

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

- добавив это в ответ на ваш комментарий -

Как написать операторы "INSERT ... SELECT" для всех ваших таблиц менее чем за минуту:

Во-первых, каждая команда выглядит так:

INSERT TargetDB.dbo.xxx select * from xxx

Здесь используется SELECT *, но, поскольку вы ищете точно совпадающие таблицы, это не должно быть проблемой. Затем, чтобы записать один из них для каждой пользовательской таблицы в выбранной в данный момент базе данных, запустите:

SELECT 'INSERT TargetDB.dbo.' + name + ' select * from ' + name
 from sys.tables

Замените "TargetDB" целевой базой данных, запустите, вырезайте и вставьте результаты, а затем работайте в блоке TRY / CATCH.

0 голосов
/ 16 июля 2009

Если схема такая же, возьмите дамп базы данных из одной базы данных и восстановите в другой базе данных.

Другой вариант - экспортировать данные в файл или в Excel, а затем импортировать их в другую базу данных.

В противном случае создайте dblink во второй базе данных и выполните запрос, например, вставку в ... (выберите из ...)

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