Как я могу выбрать данные в одной базе данных и использовать их для вставки строк в другую базу данных в T-SQL?

#sql-server-2005 #tsql

#sql-server-2005 #tsql

Вопрос:

Я пытаюсь не писать приложение для этого и одновременно улучшить свой SQL mojo…

Допустим, у меня есть данные в одной таблице базы данных Database1.dbo.MyTable со следующими столбцами:

  • ObjectType
  • ObjectKeyID

Таких строк тысячи.

В Database2.dbo.MyOtherTable У меня немного другая схема, скажем:

  • MyKey
  • myValue

Я хочу взять данные из Database1.dbo.MyTable и использовать данные каждой строки в качестве ВСТАВКИ в Database2.dbo.MyOtherTable .

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

РЕДАКТИРОВАТЬ: Вот что я в итоге использовал (поля изменены для этого примера), отлично работало в дополнение к проверке наличия ключей перед вставкой:

 INSERT INTO Database2.dbo.MyOtherTable (MyKey, MyValue)
SELECT ObjectType, ObjectKeyID FROM Database1.dbo.MyTable
WHERE ObjectType LIKE 'Widget' AND ObjectKeyID > 0 AND ObjectKey IN (SELECT UserAccountID FROM MyUsers)
  

Ответ №1:

Вы можете (и должны, если это возможно) избегать использования курсора:

 INSERT INTO Database2.dbo.MyOtherTable (MyKey, MyValue)
SELECT ObjectKeyID, ObjectType FROM Database1.dbo.MyTable 
  

Комментарии:

1. Примечание: это работает, только если обе базы данных MS SQL находятся на одном физическом сервере базы данных.

2. Что соответствует вопросу, заданному OP.

Ответ №2:

Вы можете выполнить вставку между базами данных:

 insert Database2.dbo.MyOtherTable (... columns ...)
    select ...
    from Database1.dbo.MyTable