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

Sql server 2005 如何在T-SQL中选择一个数据库中的数据,并使用它在另一个数据库中插入行?,sql-server-2005,tsql,Sql Server 2005,Tsql,我试图不写一个应用程序来实现这一点,同时改进我的SQL mojo 假设我在一个数据库表Database1.dbo.MyTable中有以下列的数据: 对象类型 ObjectKeyID 这些行有数千行 在Database2.dbo.MyOtherTable中,我有一个稍微不同的模式,比如说: 我的钥匙 我的价值 我想从Database1.dbo.MyTable获取数据,并使用每一行的数据作为Database2.dbo.MyOtherTable的插入 我的猜测是,我必须在while循环中建立一

我试图不写一个应用程序来实现这一点,同时改进我的SQL mojo

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

  • 对象类型
  • ObjectKeyID
这些行有数千行

Database2.dbo.MyOtherTable
中,我有一个稍微不同的模式,比如说:

  • 我的钥匙
  • 我的价值
我想从
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)

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

insert Database2.dbo.MyOtherTable (... columns ...)
    select ...
    from Database1.dbo.MyTable
您可以(如果可能的话)避免使用光标:

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

注意:这仅适用于两个MS SQL数据库位于同一物理数据库服务器上的情况。OP提出的问题就是如此。