Подтвердить что ты не робот

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

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

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

  • ObjectType
  • ObjectKeyID

Есть тысячи этих строк.

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

  • MyKey
  • MyValue

Я хочу взять данные из Database1.dbo.MyTable и использовать каждую строку данных как INSERT в Database2.dbo.MyOtherTable.

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

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

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)
4b9b3361

Ответ 1

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

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

Ответ 2

Вы можете сделать кросс-базу данных:

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