校验两个数据库中表内容是否一致?

0
请教各位大牛们,校验两个数据库中表内容是否一致,这个有什么好的方法做吗?详细情况是这们的,我们是数据公司,将公司数据库里的数据同步到客户的数据库中去,现在想用java写程序去实现校验客户中数据库和公司数据库里内容是否一致(多了不必要的数据或者少了数据),然后将少了的数据补发给客户,错误的数据将其删除,数据量很大,最大的表目前有3亿多条,公司数据库是sqlserver,客户数据库可以是其它(mysql,sqlserver,oracle)。
目前有个问题就是,由于没有分表,大表查询速度非常慢
已邀请:
1

BAO胖子 - 15年BI经验,涉足电力,快消品,医药,信息服务等行业的BI老兵。 2015-11-03 回答

假设:表结构,列顺序等东西都是一致的。
 
抽样调查为主,不过非得对比所有内容....你试试吧:
1. 检查表的row count, 看看是不是完全一致,如果完全一致下一步,不一致查原因
2. 检查其中几个decimal column的汇总值,看看是不是完全一致,不一致查原因
3. 按照几个主要的column做分类汇总(count, decimal),对比,不一致查原因
 
如果非得所有数据内容都对一下的话:
4. 用checksum这种东西,对所有列求一下,然后双边对比。
 
真打算用java吗?大表算了吧。
0

老头子 - 专注是唯一的捷径 2015-11-02 回答

试试ETL的CDC功能
0

GeorgeYao - 路漫漫其修远兮,吾将上下而求索! 2015-11-03 回答

楼上的注意不错, SQLServer 也有审计功能(CDC);你可以试一下。
0

gogodiy - 天善智能数据库专家、Tableau爱好者 2015-11-04 回答

如果数据量非常大,我倒是建议你可以考虑试试SAS和SPSS这种软件。我们当初在数据仓库检测数据的时候,就是通过这两个软件来进行的(我不会,但是我看过检验报告,非常详细,而且比用SQL去做快很多)。

要回复问题请先登录注册