gpt4 book ai didi

sql - 如何使用Sql Server 2008比较不同数据库中两个表之间的数据?

转载 作者:行者123 更新时间:2023-12-01 18:18:37 26 4
gpt4 key购买 nike

我有两个数据库,在 Sql server 2008 中名为 DB1 和 DB2。这两个数据库具有相同的表和相同的表数据。但是,我想检查这些表中的数据是否存在差异。

有人可以帮我编写一个脚本吗?

最佳答案

select * 
from (
select 'T1' T, *
from DB1.dbo.Table
except
select 'T2' T, *
from DB2.dbo.Table
) as T
union all
select *
from (
select 'T2' T, *
from DB2.dbo.Table
except
select 'T1' T, *
from DB1.dbo.Table
) as T
ORDER BY 2,3,4, ..., 1 -- make T1 and T2 to be close in output 2,3,4 are UNIQUE KEY SEGMENTS

测试代码:

declare @T1 table (ID int)
declare @T2 table (ID int)

insert into @T1 values(1),(2)
insert into @T2 values(2),(3)

select *
from (
select *
from @T1
except
select *
from @T2
) as T
union all
select *
from (
select *
from @T2
except
select *
from @T1
) as T

结果:

ID
-----------
1
3

注意:在开发“调整”解决方案或重构时,比较大表可能需要很长时间,这将给出与 REFERERCE 相同的结果 - 首先检查简单参数可能是明智的:例如

select count(t.*) from (
select count(*) c0, SUM(BINARY_CHECKSUM(*)%1000000) c1 FROM T_REF_TABLE
-- select 12345 c0, -214365454 c1 -- constant values FROM T_REF_TABLE
except
select count(*) , SUM(BINARY_CHECKSUM(*)%1000000) FROM T_WORK_COPY
) t

当它为空时,您可能可以控制一切,并且也许您可以在失败时进行修改,您将看到“来自 T_REF 的常量值”要插入,以节省更多时间进行下一次检查!!!

关于sql - 如何使用Sql Server 2008比较不同数据库中两个表之间的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7606175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com