sql - 将数据从一个数据库更新到另一个数据库
问题描述
- 我有两个数据库:db1 是 server,db2 是 local。
- db2我从db1数据库更新。
- 并向db2添加了 4000 条新记录。
- 我想从db2 (local)更新db1 (server),但是一些新记录已添加到db1 (server)。
- 现在当我想做恢复数据库时,来自db1(服务器)的一些新记录将消失。如何使它在我更新db1(服务器)时添加的一些记录不会丢失,并且从db2(本地)添加新的 4000 数据?谁能告诉我比较数据的方法或工具?
解决方案
您需要能够从本地数据库读取/加载数据到您的服务器数据库。这可以通过链接服务器来完成- 如果服务器是链接的,您可以db2
从db1
.
它看起来像:
SELECT *
FROM [server].[db2].[schema].[table];
如果这是不可能的,我猜你有另一种方法可以将数据移动到那里(通过 BCP 命令或者只是使用SSMS编写表格和数据db2
并在其中创建它db1
(4000 行并不多,你应该可以复制生成的 SQL)。
现在,将数据放在一个位置,您必须有一种方法来确定要插入哪些行。
这可以像这样轻松完成:
SELECT *
FROM db2Table
EXCEPT
SELECT *
FROM db1Table
因此,如果在db2Table
其中未找到的db1Table
行将被返回。然后,只需插入这些行。
请注意,EXCEPT
with*
是比较所有列。因此,如果您有类似的列ID INT IDENTITY(1,1)
,则需要将其从SELECT
列表中排除。
此外,如果您有办法通过ID
or映射两个表之间的数据GUID
(很多人使用 UNIQUEIDENTIFIER 来同步数据),您可以执行更复杂的操作。例如:
- 如果表
GUID
中缺少记录db1
- 插入它 - 如果
GUID
在表中找到记录db1
- 更新它
推荐阅读
- graphql - 如何在 GraphQL 中对变量执行操作?
- android - 我无法在 Android Studio 中使用 GitHub 登录。问题是什么?
- sql - 使用窗口函数计算行数
- cs-cart - cscart {{o._tax_name}} 文档中的值 - 发票和订单摘要
- sql - 添加 JOIN 时 BigQuery 查询非常慢
- multithreading - 不恰当的阻塞方法调用
- python - 如何在 tkinter 中使用 trace() 在回调函数中传递字符串 var
- database - 为一件事清洁具有许多不同单词的数据集
- css - Bootstrap 中输入的动画焦点
- php - 在 WooCommerce 结帐中添加具有时间间隔的选择字段选项