我有一张包含百万条记录的表格。
但是,我只想复制10000行并将其插入到sql server management studio中不同服务器的另一个表中。
Server1
Db1
Table : table1
Server2
Db1
Table : table1
我想从Db1中的table1复制10000行,并将其插入Db2中从Server1到Server2的table1。
我知道这种查询语法,但我不知道如何处理不同的服务器
INSERT table1 (Col1, Col2, ..., ColN)
SELECT Col1, Col2, ..., ColN
FROM table2
WHERE ...
答案 0 :(得分:2)
除了涉及链接服务器的其他答案之外,您还可以在SSMS中右键单击数据库,然后使用“导入/导出向导”将行从一个服务器移动到另一个服务器。
在向导中,您可以指定一个只返回要导出的前10k行的查询。
答案 1 :(得分:1)
在第一个实例上,您可以将链接服务器添加到第二个实例,然后使用4部分命名引用它。您可以通过展开服务器对象节点添加链接服务器,然后右键单击“链接服务器”
然后您的查询看起来像
INSERT YourlinkedServer.YourDB.YourSchema.table1 (Col1, Col2, ..., ColN)
SELECT TOP 1000 Col1, Col2, ..., ColN
FROM table2
WHERE ...
您的查询也可以通过将远程数据插入本地表来运行
INSERT table1 (Col1, Col2, ..., ColN)
SELECT TOP 1000 Col1, Col2, ..., ColN
FROM YourlinkedServer.YourDB.YourSchema.table2
WHERE ...
关联的服务器https://msdn.microsoft.com/en-GB/library/ms188279.aspx
答案 2 :(得分:0)
您只需要使用db和schema名称为表名添加前缀:
INSERT INTO db2.dbo.table1 (Col1, Col2, ..., ColN)
SELECT TOP 10000 Col1, Col2, ..., ColN
FROM db1.dbo.table2
WHERE ...
答案 3 :(得分:0)
更新了答案,以包括如何在链接服务器上执行此操作。 'Insert Into'语句允许您插入到链接服务器中,就像插入同一服务器上的另一个表,临时表,表变量等一样。只要select包含正确的列数和相应的数据以下伪代码工作的第二个表的类型:
Insert Into LinkedServer.Db2.DbSchema.Table1
Select Top 10000
Column1,
Column2,
...
From Db1.Table1
Where ...