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

Я пытаюсь не писать приложение для этого и одновременно улучшать свой 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)

Ответы [ 2 ]

34 голосов
/ 18 апреля 2011

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

INSERT INTO Database2.dbo.MyOtherTable (MyKey, MyValue)
SELECT ObjectKeyID, ObjectType FROM Database1.dbo.MyTable 
6 голосов
/ 18 апреля 2011

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

insert Database2.dbo.MyOtherTable (... columns ...)
    select ...
    from Database1.dbo.MyTable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...