如何确定修改后源表和目标表的记录数是否相同?如何同步?
How to make sure if the both source and target tables have same number of records after modification? How to sync?
我正在使用 Insert....select
.
将数据从一个数据库复制到另一个具有相似 table 的数据库
现在,没关系,但如果源数据库编辑了一些东西,我希望它在目标数据库中更新table,那将是一个问题。
我有几个解决方案:
如果记录存在(将使用我们拥有的 GUID 进行验证)则
删除它和它的 child 数据并再次插入所有新的更新数据。
合并 tables
SELECT * FROM SourceDb.dbo.Table1
UNION
SELECT * FROM TargetDb.dbo.Table2
如果您得到的记录大于两个 table 中的任何一个,则它们没有相同的数据,需要删除并且 re-add。
但问题是我有大约 1 个 parent 和大约 7 个 child table,所以使用 union 进行检查需要一些额外的编码。
我该怎么办?
验证集合 A = 集合 B 的一般查询是:
A - B U B - A = ∅ (set theory)
您可以使用上面的查询:
WITH
TA AS (SELECT * FROM databaseA.SchemaA.TableA),
TB AS (SELECT * FROM databaseB.SchemaB.TableB)
SELECT * FROM TA
EXCEPT
SELECT * FROM TB
UNION ALL
SELECT * FROM TB
EXCEPT
SELECT * FROM TA;
我正在使用 Insert....select
.
现在,没关系,但如果源数据库编辑了一些东西,我希望它在目标数据库中更新table,那将是一个问题。
我有几个解决方案:
如果记录存在(将使用我们拥有的 GUID 进行验证)则 删除它和它的 child 数据并再次插入所有新的更新数据。
合并 tables
SELECT * FROM SourceDb.dbo.Table1 UNION SELECT * FROM TargetDb.dbo.Table2
如果您得到的记录大于两个 table 中的任何一个,则它们没有相同的数据,需要删除并且 re-add。
但问题是我有大约 1 个 parent 和大约 7 个 child table,所以使用 union 进行检查需要一些额外的编码。
我该怎么办?
验证集合 A = 集合 B 的一般查询是:
A - B U B - A = ∅ (set theory)
您可以使用上面的查询:
WITH
TA AS (SELECT * FROM databaseA.SchemaA.TableA),
TB AS (SELECT * FROM databaseB.SchemaB.TableB)
SELECT * FROM TA
EXCEPT
SELECT * FROM TB
UNION ALL
SELECT * FROM TB
EXCEPT
SELECT * FROM TA;