SQL Server:复制数据而不重复

时间:2013-08-03 11:14:10

标签: sql sql-server sql-server-2008 tsql ssms

如何将(可能很大的)表的内容从本地数据库传输到远程托管的表,如下所示

  • 目标表中不允许重复的条目
  • 数据流量应保持在最低限度

本地我在远程主机上有SQL Server Express:SQL Server Standard。

1 个答案:

答案 0 :(得分:0)

根据您的托管服务提供商的“远程”( - >带宽),从两个数据库运行涉及表的查询通常不是一个好主意,尽管从技术上来说这可以使用MSSQL-studio。

我的建议:将整个批次从本地表(例如tbl)上传到名为tmptbl的服务器表中,然后使用以下命令在远程系统上进行插入

INSERT INTO tbl (id,col1,col2,col3, ...) 
SELECT id,col1,col2,col3, ... FROM tmptbl WHERE id NOT IN (
 SELECT id FROM tbl
)

之后,您可以再次DROP导入表tmptbl ... 此示例假定id唯一标识您的记录。我仍然明确地为所有列命名,以防每个表中还有auto_increment - ed PRIMARY KEY

修改

或者,(理论上)可以通过使用sp_addlinkedserver链接远程服务器的表来直接在两个服务器的表之间应用上述语句,请参阅MSSQL manual。我过去也尝试过,但发现由于服务器之间的带宽有限,性能非常不好,特别是在涉及更大的表时。