如何在一个数据库中选择数据,并使用它在T-SQL中的另一个数据库中插入行?

Bra*_*don 18 t-sql sql-server-2005

我试图不写一个应用程序来做到这一点,同时改善我的SQL mojo ...

假设我在一个数据库表中Database1.dbo.MyTable包含以下列的数据:

  • 对象类型
  • ObjectKeyID

这些行有数千个.

Database2.dbo.MyOtherTable我有一个略有不同的架构,让我们说:

  • 我的钥匙
  • myvalue的

我想从中获取数据Database1.dbo.MyTable,并将每行的数据用作INSERT 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)
Run Code Online (Sandbox Code Playgroud)

Mit*_*eat 34

你可以(如果可能的话)避免使用游标:

INSERT INTO Database2.dbo.MyOtherTable (MyKey, MyValue)
SELECT ObjectKeyID, ObjectType FROM Database1.dbo.MyTable 
Run Code Online (Sandbox Code Playgroud)

  • OP提出的问题就是这样. (4认同)
  • 注意:这仅适用于两个MS SQL数据库位于同一物理数据库服务器上的情况. (2认同)

ano*_*non 6

您可以执行跨数据库插入:

insert Database2.dbo.MyOtherTable (... columns ...)
    select ...
    from Database1.dbo.MyTable
Run Code Online (Sandbox Code Playgroud)