从一个SQL Server选择数据插入到另一个SQL Server?

11
我想从一个服务器(Data.Old.S1)中的一个表(DB1中的T1)中选择数据,将其插入到另一个服务器(Data.Latest.S2)中的另一个表(DB2中的T2)中。请问如何实现?
请注意服务器的命名方式。查询应该也要注意这一点,即SQL服务器不应该混淆完全限定的表名。例如,Data.Old.S1.DB1.dbo.T1可能会让SQL服务器感到困惑。
我还想进行“映射”。例如,T1的Col1应该对应T2的Col18等。

1
你如何让DB1和DB2相互通信?使用链接服务器吗?这可以通过几种方式实现...最佳选择取决于您希望多频繁地访问旧服务器(一次性迁移还是经常更新)。 - Twelfth
7个回答

9
使用Sql Server Management Studio的导入功能。
  1. 在对象资源管理器中右键单击数据库,选择导入
  2. 选择源数据库
  3. 选择目标数据库
  4. 选择“指定自定义查询”选项,只需从DB1中选择T1中的数据即可
  5. 选择目标数据库中的目标表,例如T2
  6. 执行导入

9
创建一个“链接服务器”,然后使用“openquery” SQL语句。具体操作请参考此链接此链接

选择 T1 的 Col1 列到 T2 的 Col17 列,其中 {某些条件}。 - Steam
1
链接服务器运行得非常好。对于实际的SQL查询,我没有使用openquery,而是编写了一个标准的插入查询,但是使用下面另一个答案中的语法完全限定了链接服务器表,如下所示:[linked_server]。[databasename]。dbo。[tablename]。 - user3308241

6
select * into [newtable] from [linked_server].[databasename].dbo.[tablename]

选择 T1 的 Col1 列到 T2 的 Col17 列,其中 {某些条件}。 - Steam
这并不是普遍的真实情况。 - Amir Keshavarz
2
@AmirrezaKeshavarz - 这通常不是真的。 - Steam
你应该使用完全限定的表名。 - Amir Keshavarz

0

如果只是一次性的链接服务器,那么就可以使用适当的方法。但是如果需要频繁地移动数据,复制是更好、更容易的选择。


0

我认为你过于强调 SQL 而使它变得过于复杂。在 SSMS 中,右键单击要导出的服务器,选择“任务”,“导出”,然后让向导引导您完成选择目标服务器和表的步骤,其中包括将所有列映射到与您在 SQL 情况下尝试做的完全相同。您似乎正在寻找的所有功能已经存在。

没有必要使用链接服务器、SSIS 或其他任何东西来完成此操作。它已经内置于 SQL Server Management Studio 中。


0

基于被接受的答案。
确保源服务器(server1)已连接到目标服务器(server2):

SELECT * 
INTO Server2.DB2.dbo.T2
FROM OPENQUERY (server1
                , ' SELECT col_one, col_two, ...
                    FROM DB1.dbo.T1 
                    WHERE ...
                    ...
                );

-1
你可以看一下这个:

点击这里!

或者你可以使用SSIS,这可能会更简单。

我需要SQL。我有SSIS,但是根据我的情况,我需要用SQL来完成它。 - Steam
选择 T1 的 Col1 列到 T2 的 Col17 列,其中 {某些条件}。 - Steam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接