2009-07-16 7 views
0

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

ответ

0

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

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

Otherway является создание DBLink во второй базе данных и выполнить запрос, как вставки в ... (выбрать из ...)

+0

были бы только некоторые таблицы, которые имели бы такую ​​же схему ... я бы хотел скопировать данные в эти таблицы и оставил остальные. –

2

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

+0

У нас есть несколько процессов, которые выполняются ежеквартально или ежегодно (и человек, делающий их, забыл как о том, как их делать, и что они должны быть выполнены). Следовательно, мы создали пакеты SSIS (они назывались DTS), чтобы сделать их последовательным, повторяемым образом. – Tangurena

0

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

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

- Добавление этого в ответ на ваш комментарий -

Как написать «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

, но это потребует от меня написать запросы на вставку для всех моих таблиц !!! –

+0

Добавил вторую половину сообщения в ответ на ваш комментарий. –

Смежные вопросы