首页 > 解决方案 > 将数据从一个数据库更新到另一个数据库

问题描述

  1. 我有两个数据库:db1 是 serverdb2 是 local
  2. db2我从db1数据库更新。
  3. 并向db2添加了 4000 条新记录。
  4. 我想从db2 (local)更新db1 (server),但是一些新记录已添加到db1 (server)
  5. 现在当我想做恢复数据库时,来自db1(服务器)的一些新记录将消失。如何使它在我更新db1(服务器)时添加的一些记录不会丢失,并且从db2(本地)添加新的 4000 数据?谁能告诉我比较数据的方法或工具?

标签: sqlsql-servertsqlsql-update

解决方案


您需要能够从本地数据库读取/加载数据到您的服务器数据库。这可以通过链接服务器来完成- 如果服务器是链接的,您可以db2db1.

它看起来像:

SELECT *
FROM [server].[db2].[schema].[table];

如果这是不可能的,我猜你有另一种方法可以将数据移动到那里(通过 BCP 命令或者只是使用SSMS编写表格和数据db2并在其中创建它db1(4000 行并不多,你应该可以复制生成的 SQL)。

现在,将数据放在一个位置,您必须有一种方法来确定要插入哪些行。

这可以像这样轻松完成:

SELECT *
FROM db2Table
EXCEPT
SELECT *
FROM db1Table 

因此,如果在db2Table其中未找到的db1Table行将被返回。然后,只需插入这些行。

请注意,EXCEPTwith*是比较所有列。因此,如果您有类似的列ID INT IDENTITY(1,1),则需要将其从SELECT列表中排除。

此外,如果您有办法通过IDor映射两个表之间的数据GUID(很多人使用 UNIQUEIDENTIFIER 来同步数据),您可以执行更复杂的操作。例如:

  1. 如果表GUID中缺少记录db1- 插入它
  2. 如果GUID在表中找到记录db1- 更新它

推荐阅读