一种关系型数据库数据对比方法及系统技术方案

技术编号:24121219 阅读:25 留言:0更新日期:2020-05-13 03:08
本发明专利技术公开了一种关系型数据库数据对比方法及系统,所述方法包括以下步骤:分别从源库和目标库中获取数据表名并进行对比,得到表名对比结果;对于表名对比结果为相同的每一对数据表,进行全表对比,得到全表对比结果;对于全表对比结果为相同的每一对数据表,进行逐行对比,得到逐行对比结果;其中,所述表名对比结果和逐行对比结果中,对于对比结果为不同的记录,均采用操作名称来标识;所述操作名称为更新、操作或删除。本发明专利技术依次针对源库和目标库中的数据表名、全表和行进行对比,对比更为准确;且采用操作名称来标识对比结果为“不同”的表名或行,能够为用户提供对于目标库的下一步操作指示。

【技术实现步骤摘要】
一种关系型数据库数据对比方法及系统
本专利技术属于数据库
,尤其涉及一种关系型数据库数据对比方法及系统。
技术介绍
本部分的陈述仅仅是提供了与本公开相关的
技术介绍
信息,不必然构成在先技术。随着各类数据库类型的应用。为了提高数据交换效率,或者保证数据实时性等情况,需要在多个数据库之间进行数据同步或者迁移操作。然而,进行同步或迁移后,如何判断同步或者迁移后的数据与源数据库中一致,是目前亟待解决的技术问题。据专利技术人了解,不同的数据库之间数据类型有差异,对数据的存储方式也不同,例如同样的数据,有的数据库存储二进制,有的存储是十六进制,导致尽管数据相同,但不能拿来直接对比,通常需要人工参与对比;并且,数据库通常数据量大,一条一条进行对比,耗时耗力,效率低。
技术实现思路
为克服上述现有技术的不足,本专利技术提供了一种关系型数据库数据对比方法及系统,依次针对源库和目标库中的数据表名、全表和行进行对比,对比更为准确;且采用操作名称来标识对比结果为“不同”的表名或行,能够为用户提供对于目标库的下一步操作指示。为实现上述目的,本专利技术的一个或多个实施例提供了如下技术方案:一种关系型数据库数据对比方法,包括以下步骤:分别从源库和目标库中获取数据表名并进行对比,得到表名对比结果;对于表名对比结果为相同的每一对数据表,进行全表对比,得到全表对比结果;对于全表对比结果为相同的每一对数据表,进行逐行对比,得到逐行对比结果;其中,所述表名对比结果和逐行对比结果中,对于对比结果为不同的记录,均采用操作名称来标识;所述操作名称为更新、操作或删除。进一步地,数据表名对比方法包括:创建map,将源库表名列表写入key字段,将value字段作为表名对比结果字段,value字段的值初始化为插入;对于目标库中的每个表名,查找map中是否存在该表名,若存在,表名对比结果修改为相同;若不存在,不作处理;遍历map,得到表名对比结果列表。进一步地,全表对比方法包括:对于表名对比结果为相同的每一对数据表,依次根据表名、数据表行数和全表MD5将两个数据表进行对比。进一步地,全表对比方法包括:对于表名对比结果为相同的每一对数据表,均执行以下操作:从源库和目标库获取两个数据表的字段信息,所述字段信息包括字段名和字段的数据类型;根据字段名的哈希值判断所述两个数据表中字段名是否完全相等,若相等,判断字段的数据类型中是否存在MD5值不支持的数据类型,若不存在,从源库和目标库获取所述两个数据表的行数,判断行数是否相等,若行数均不为0且相等,从源库和目标库获取所述两个数据表的全表MD5,如果全表MD5值相等,所述两个数据表的全表对比结果为相同,否则,为不同。进一步地,逐行对比方法包括:对于全表对比结果为相同的每一对数据表,判断两个数据表是否存在主键,若存在,依次按照主键值MD5和整行数据值MD5对两个数据表进行对比;若不存在,按照整行数据值MD5对两个数据表进行对比。进一步地,若两个数据表存在主键,分别获取两个数据表中每一行对应的唯一标识、主键值MD5和整行数据值MD5,并分别写入两个行数据列表;遍历源库行数据列表,将主键值MD5列写入map中的key字段,将value字段作为行对比结果字段;遍历目标库行数据列表,对于目每个主键值MD5,判断map中是否存在该主键值MD5,如果不存在,行对比结果记为删除;如果存在,对比整行数据MD5值,若相同,从map中移除,否则,行对比结果记为更新;遍历源库行数据列表,对于每个主键值MD5,判断map中是否存在该主键值MD5,如果不存在,将该主键值MD5写入map,相应的行对比结果记为插入;如果存在,对比整行数据MD5值,若相同,从map中移除;否则行对比结果为更新。进一步地,若两个数据表没有主键,分别获取两个数据表中每一行对应的唯一标识和整行数据值MD5,并分别写入两个行数据列表;创建map,key字段初始化为空,将value字段作为行对比结果字段;遍历源库行数据列表,对于每个整行数据值MD5,判断map中是否存在该整行数据值MD5,如果存在,该整行数据值MD5的出现次数加1;如果不存在,将该整行数据值MD5写入map,该整行数据值MD5的出现次数加1,并将相应的行对比结果赋值为插入;遍历目标库行数据列表,对于每个整行数据值MD5,判断map中是否存在该整行数据值MD5,如果存在,该整行数据值MD5的出现次数减1;如果不存在,将该整行数据值MD5写入map,该整行数据值MD5的出现次数减1,并将相应的行对比结果赋值为删除。进一步地,所述方法还包括:将表名对比结果、全表对比结果和逐行对比结果进行可视化输出。一个或多个实施例提供了一种关系型数据库数据对比系统,包括:待对比数据库选择模块,接收指定的待比较源库和目标库数据库;表名对比模块,从源库和目标库中获取数据表名并进行对比,得到表名对比结果;全表对比模块,接收表名对比结果,对于表名对比结果为相同的每一对数据表,进行全表对比,得到全表对比结果;逐行对比模块,接收全表对比结果,对于全表对比结果为相同的每一对数据表,进行逐行对比,得到逐行对比结果;其中,所述表名对比结果和逐行对比结果中,对于对比结果为不同的记录,均采用操作名称来标识;所述操作名称为更新、操作或删除。进一步地,还包括对比结果展示模块,用于对表名、全表或逐行对比结果进行展示。以上一个或多个技术方案存在以下有益效果:本专利技术的数据库数据对比方法依次针对源库和目标库中的数据表名、全表和行进行对比,对比更为全面,得到的对比结果更为精确;并且其中,全表依次根据字段名、行数和全表MD5进行对比,行依次根据主键MD5和整行数据MD5进行对比,将MD5引入全表和行之间的对比,相较于直接对比内容而言,准确率和对比效率都有很大提高,可以在短时间内对比大量数据;本专利技术采用操作名称(更新、操作或删除)来标识对比结果为“不同”的表名或行,除了直观的体现出不同外,还为用户提供了对于目标库的下一步操作指示。本专利技术还提供了一种数据库数据对比系统,通过该系统,用户可以自主选择源库和目标库,并且提供了表名对比、全表对比和逐行对比模块,用户可根据需求查看各对比结果。附图说明构成本专利技术的一部分的说明书附图用来提供对本专利技术的进一步理解,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。图1为本专利技术实施例中关系型数据库数据对比方法整体流程图;图2为本专利技术实施例中表名对比流程图;图3为本专利技术实施例中全表对比流程图;图4为本专利技术实施例中关系型数据库数据对比系统整体功能框架图。具体实施方式应该指出,以下详细说明都是示例性的,旨在对本专利技术提供进一步的说明。本文档来自技高网...

【技术保护点】
1.一种关系型数据库数据对比方法,其特征在于,包括以下步骤:/n分别从源库和目标库中获取数据表名并进行对比,得到表名对比结果;/n对于表名对比结果为相同的每一对数据表,进行全表对比,得到全表对比结果;/n对于全表对比结果为相同的每一对数据表,进行逐行对比,得到逐行对比结果;/n其中,所述表名对比结果和逐行对比结果中,对于对比结果为不同的记录,均采用操作名称来标识;所述操作名称为更新、操作或删除。/n

【技术特征摘要】
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列...

【专利技术属性】
技术研发人员:王大鹏冯路卢健范翊张元超
申请(专利权)人:瀚高基础软件股份有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1