在数据迁移或数据装载中,如何判断数据的正确性?有些数据可能没有被迁移,已经迁移成功的数据可能某些字段不一致。在大数据量的情况下,数据的校验还是很有必要的。
现在说一下对单表验证的一些简单想法:
1. 校验和法
这种做法简单直接。在源表上通过自定义的函数生成一个校验和,然后数据导出后,在目标表生成一个校验和。两个检验和进行一一对比即可。这里一一对比要配合主键,另外要考虑到源库和目的库可能是不能的数据库。
校验和法基本能确保每条数据的正确性。
2. 查询覆盖法
假设已经有一个查询SQL集合,我们可以定义查询结果输出的统一格式。在源表上跑这个SQL集合得到一个标准输出,再在目的表上跑这个SQL集合得到一个输出。两相比较来进行验证。
校验的强度取决于SQL集合的覆盖,一般这些SQL集合由人来编写。不过最好能自动生成,定义一些规则,结合表的定义来生成。比如count(*)得到总条数,另外针对不同类型来max,min,sum等,还有distinct,group by。尽可能做到较全的覆盖!
这种情况也适合多表验证,各种约束引用,可以制定较复杂的规则来生成SQL覆盖。