1.一种关系型数据库数据对比方法,其特征在于,包括以下步骤:
分别从源库和目标库中获取数据表名并进行对比,得到表名对比结果;
对于表名对比结果为相同的每一对数据表,进行全表对比,得到全表对比结果;
对于全表对比结果为相同的每一对数据表,进行逐行对比,得到逐行对比结果;
其中,所述表名对比结果和逐行对比结果中,对于对比结果为不同的记录,均采用操作名称来标识;所述操作名称为更新、操作或删除。
2.如权利要求1所述的一种关系型数据库数据对比方法,其特征在于,数据表名对比方法包括:
创建map,将源库表名列表写入key字段,将value字段作为表名对比结果字段,value字段的值初始化为插入;
对于目标库中的每个表名,查找map中是否存在该表名,若存在,表名对比结果修改为相同;若不存在,不作处理;
遍历map,得到表名对比结果列表。
3.如权利要求1所述的一种关系型数据库数据对比方法,其特征在于,全表对比方法包括:对于表名对比结果为相同的每一对数据表,依次根据表名、数据表行数和全表md5将两个数据表进行对比。
4.如权利要求3所述的一种关系型数据库数据对比方法,其特征在于,全表对比方法包括:
对于表名对比结果为相同的每一对数据表,均执行以下操作:
从源库和目标库获取两个数据表的字段信息,所述字段信息包括字段名和字段的数据类型;
根据字段名的哈希值判断所述两个数据表中字段名是否完全相等,
若相等,判断字段的数据类型中是否存在md5值不支持的数据类型,
若不存在,从源库和目标库获取所述两个数据表的行数,判断行数是否相等,
若行数均不为0且相等,从源库和目标库获取所述两个数据表的全表md5,如果全表md5值相等,所述两个数据表的全表对比结果为相同,否则,为不同。
5.如权利要求1所述的一种关系型数据库数据对比方法,其特征在于,逐行对比方法包括:
对于全表对比结果为相同的每一对数据表,判断两个数据表是否存在主键,若存在,依次按照主键值md5和整行数据值md5对两个数据表进行对比;若不存在,按照整行数据值md5对两个数据表进行对比。
6.如权利要求5所述的一种关系型数据库数据对比方法,其特征在于,
若两个数据表存在主键,分别获取两个数据表中每一行对应的唯一标识、主键值md5和整行数据值md5,并分别写入两个行数据列表;
遍历源库行数据列表,将主键值md5列写入map中的key字段,将value字段作为行对比结果字段;
遍历目标库行数据列表,对于目每个主键值md5,判断map中是否存在该主键值md5,如果不存在,行对比结果记为删除;
如果存在,对比整行数据md5值,若相同,从map中移除,否则,行对比结果记为更新;
遍历源库行数据列表,对于每个主键值md5,判断map中是否存在该主键值md5,如果不存在,将该主键值md5写入map,相应的行对比结果记为插入;
如果存在,对比整行数据md5值,若相同,从map中移除;否则行对比结果为更新。
7.如权利要求5所述的一种关系型数据库数据对比方法,其特征在于,
若两个数据表没有主键,分别获取两个数据表中每一行对应的唯一标识和整行数据值md5,并分别写入两个行数据列表;
创建map,key字段初始化为空,将value字段作为行对比结果字段;
遍历源库行数据列表,对于每个整行数据值md5,判断map中是否存在该整行数据值md5,如果存在,该整行数据值md5的出现次数加1;如果不存在,将该整行数据值md5写入map,该整行数据值md5的出现次数加1,并将相应的行对比结果赋值为插入;
遍历目标库行数据列表,对于每个整行数据值md5,判断map中是否存在该整行数据值md5,如果存在,该整行数据值md5的出现次数减1;如果不存在,将该整行数据值md5写入map,该整行数据值md5的出现次数减1,并将相应的行对比结果赋值为删除。
8.如权利要求5所述的一种关系型数据库数据对比方法,其特征在于,所述方法还包括:将表名对比结果、全表对比结果和逐行对比结果进行可视化输出。
9.一种关系型数据库数据对比系统,其特征在于,包括:
待对比数据库选择模块,接收指定的待比较源库和目标库数据库;
表名对比模块,从源库和目标库中获取数据表名并进行对比,得到表名对比结果;
全表对比模块,接收表名对比结果,对于表名对比结果为相同的每一对数据表,进行全表对比,得到全表对比结果;
逐行对比模块,接收全表对比结果,对于全表对比结果为相同的每一对数据表,进行逐行对比,得到逐行对比结果;
其中,所述表名对比结果和逐行对比结果中,对于对比结果为不同的记录,均采用操作名称来标识;所述操作名称为更新、操作或删除。
10.如权利要求9所述的一种关系型数据库数据对比系统,其特征在于,还包括对比结果展示模块,用于对表名、全表或逐行对比结果进行展示。