2009-06-10 6 views
0

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

Я хочу передать данные из базы данных. Табличные контакты в базу данных таблицы B. Я использую SQL Server 2005 и хочу писать sql-скрипты для этого.

Может ли кто-нибудь сказать мне, какой самый простой и эффективный способ достичь этого: a) Если они находятся на одном сервере SQL b) Если они находятся на разных серверах SQL.

Cheers

ответ

1

Использовать SSIS. Он будет работать как для локальных, так и для удаленных случаев и позволит вам настроить преобразование между таблицами, сопоставить столбцы с другими столбцами и т. Д.

+0

SSIS BOL: http://msdn.microsoft.com/en-us/library/ms141026. aspx –

+0

Спасибо Митч, Я прочитал несколько SSIS. Amm верно, что SSIS имеет только графический интерфейс для выполнения сопоставления или можно создавать скрипты после завершения сопоставления, чтобы его можно было использовать несколько раз. Система, над которой я работаю, будет запускать хранимую процедуру, которая считывает данные из базы данных A в базу данных B – 2009-06-10 04:55:16

1

Это одноразовый перевод? Если это простая передача я пишу ЗЕЬЕСТ, чтобы создать операторы INSERT, т.е.

SELECT 'INSERT INTO Accounts (ID, Name) VALUES (' + CAST(ID as VARCHAR) + ', ''' + Name + ''')' 
FROM Contacts 

Выполнить это на базе данных А - и он будет выплевывать все операторы INSERT, которые можно копировать и вставлять, так что вы можете запускать их на базы данных B.

Или на той же базе данных:

INSERT INTO DatabaseA.dbo.Accounts (ID, Name) 
SELECT Id, Name 
FROM DatabaseB.dbo.Contacts 

еще не удовлетворены - попробуйте настройки связанных серверов: http://msdn.microsoft.com/en-us/library/aa213778(SQL.80).aspx

+0

Спасибо russau. Мне нужна операция несколько раз. – 2009-06-10 04:56:19

1

Самый простой способ не является наиболее эффективным. SSIS, вероятно, наиболее эффективен, как уже указывал Митч.

Самый простой (если вы еще не знаете SSIS) - это просто настроить связанный сервер с удаленной БД и ВЫБРАТЬ данные, используя четырехзначное именование. Вы создали связанный сервер, используя sp_addlinkedserver и sp_addlinkedsrvlogin (проверка BOL для синтаксиса), и запрос следующим образом:

INSERT INTO MyLocalTable (ColumnList) 
SELECT <Columns> FROM RemoteServer.RemoteDB.RemoteSchema.RemoteTable 
+0

Спасибо Aaron, Я читал SSIS. Amm верно, что SSIS имеет только графический интерфейс для выполнения сопоставления или можно создавать скрипты после завершения сопоставления, чтобы его можно было использовать несколько раз. Система, над которой я работаю, будет запускать хранимую процедуру, которая считывает данные из базы данных A в базу B – 2009-06-10 04:54:41

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