Перенос данных из одной базы данных в другую - PullRequest
0 голосов
/ 10 июня 2009

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

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

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

Приветствия

Ответы [ 3 ]

1 голос
/ 10 июня 2009

Это однократный перевод? Если это простая передача, я пишу оператор SELECT для создания операторов INSERT, т.е.

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

Запустите это в базе данных A - и оно выплюнет все операторы 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

1 голос
/ 10 июня 2009

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

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

INSERT INTO MyLocalTable (ColumnList)
SELECT <Columns> FROM RemoteServer.RemoteDB.RemoteSchema.RemoteTable
1 голос
/ 10 июня 2009

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

...