一种数据表处理方法、装置及存储介质与流程

文档序号:23539324发布日期:2021-01-05 20:46阅读:49来源:国知局
一种数据表处理方法、装置及存储介质与流程

本发明涉及数据库技术领域,尤其涉及一种数据表处理方法、装置及存储介质。



背景技术:

目前市场流行的各种关系型数据库应用,都存在一个无法对一整张数据表的散列算法。而这种缺陷,会造成同构关系型数据库之间、异构关系型数据库之间的两张表在数据值一致性的校验时,需要人工参与比对,并且在大数据量情况下,非常耗时、效率低下。



技术实现要素:

本发明实施例提供一种数据表处理方法、装置及存储介质,用以实现对整张数据表的散列计算,提高数据表的运算以及校验效率。

第一方面,本发明实施例提出一种数据表处理方法,包括:

确定目标数据表的目标散列值;

获取所述目标散列值预设位置的字符串取值;

对所述字符串取值进行数学运算,以获得所述目标数据表的散列数据。

可选的,所述确定目标数据表的目标散列值,包括:

确定所述目标数据表的不同数据位对应数据的第一散列值;

拼接所述第一散列值,以获得中间散列数据;

确定所述中间散列数据的第二散列值,第二散列值即为目标散列值。

可选的,拼接所述第一散列值,包括:

根据所述目标数据表的行列关系顺序拼接不同数据位对应数据的所述第一散列值。

可选的,所述目标数据表包括行数据位和列数据位,其中每个数据位上记录有对应的数据;

所述根据所述目标数据表的行列关系顺序拼接不同数据位对应的所述第一散列值,包括:

对于所述目标数据表的每行数据对应的所述第一散列值按照列顺序拼接;或者,

对于所述目标数据表的每列数据对应的所述第一散列值按照行顺序拼接。

可选的,所述获取所述目标散列值预设位置的字符串取值,包括:

提取所述目标散列值的预设位置的字符数据,并对提取出的字符数据进行ascii转换;

顺序拼接ascii转换后的所述字符数据,以获得所述字符串取值。

可选的,对所述字符串取值进行数学运算,以获得所述目标数据表的散列数据,包括:

对所述字符串取值求和,求和的结果即为所述目标数据表的散列数据。

可选的,对所述字符串取值进行数学运算,以获得所述目标数据表的散列数据,包括:

将所述字符串取值除以给定值,以确定中间值;

顺序求和所述中间值,以获得所述目标数据表的散列数据。

可选的,获得所述目标数据表的散列数据之后,所述方法还包括:

比对不同目标数据表的散列数据,完成不同目标数据表的数据一致性校验。

第二方面,本发明实施例提出一种数据表处理装置,包括:

散列值计算模块,用于确定目标数据表的目标散列值;

提取模块,用于获取所述目标散列值预设位置的字符串取值;

数学运算模块,用于对所述字符串取值进行数学运算,以获得所述目标数据表的散列数据。

第三方面,本发明实施例提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现前述的数据表处理方法的步骤。

本发明通过确定目标数据表的目标散列值,然后获取所述目标散列值预设位置的字符串取值,接着对所述字符串取值进行数学运算,由此可以确定出整张数据表的散列数据,有效提高了数据表的运算以及校验效率。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本发明第一实施例流程图;

图2为本发明第一实施例总流程示意图;

图3为本发明第一实施例数据表对比流程图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

实施例一

本发明第一实施例提供一种数据表处理方法,如图1所示,包括以下具体步骤:

s101、确定目标数据表的目标散列值;

s102、获取所述目标散列值预设位置的字符串取值;

s103、对所述字符串取值进行数学运算,以获得所述目标数据表的散列数据。

本发明通过确定目标数据表的散列值,然后获取所述散列值预设位置的字符串取值,接着对所述字符串取值进行数学运算,由此可以确定出整张数据表的散列数据,有效提高了数据表的运算以及校验效率。

可选的,所述确定目标数据表的散列值,包括:

s1011、确定所述目标数据表的不同数据位对应数据的第一散列值;

s1012、拼接所述第一散列值,以获得中间散列数据;

具体地说,本实施例中确定所述目标数据表的不同数据位对应数据的第一散列值,可以对于目标数据表中的每列数据,利用数据库内置的md5函数求得对应每列数据的第一散列值,具体的关系型数据库提供的md5函数,会生成一个32位的散列值,32位比16位的散列值更安全。在一种可选的实施方式中目标数据表可以是关系型数据库中的数据表,例如同构关系型数据库中的数据表或者异构关系型数据库中的数据表。当然也可以对于目标数据表中的每行数据,利用数据库内置的md5函数求得对应每行数据的第一散列值。

可选的,拼接所述第一散列值,包括:

根据所述目标数据表的行列关系顺序拼接不同数据位对应数据的所述第一散列值。

可选的,所述目标数据表包括行数据位和列数据位,其中每个数据位上记录有对应的数据;

所述根据所述目标数据表的行列关系顺序拼接不同数据位对应的所述第一散列值,包括:

对于所述目标数据表的每行数据对应的所述第一散列值按照列顺序拼接;或者,

对于所述目标数据表的每列数据对应的所述第一散列值按照行顺序拼接。

具体地说,如图2所示,数据表由行列对应的数据位组成,每列有多个数据位,每行也有多个数据位,每个数据位有对应的数据,其中每个数据位上记录有对应的数据。本实例在求的对应每列数据的第一散列值之后,将每列求得对应的md5散列值的字符串进行横向拼接,或者在求的对应每行数据的第一散列值之后,将每行求得对应的md5散列值的字符串进行纵向拼接。拼接后的效果就是将n列合并成1列的字符串或者将n行合并成1行的字符串,也即中间散列数据,如果字段非常多,值会比较长。

s1013、确定所述中间散列数据的第二散列值,第二散列值即为目标散列值。

然后,在获得中间散列数据之后,本实施例中进一步对获得的中间散列数据进行md5运算获取第二散列值,也即目标散列值,由此可以获得仅1列的纵向md5值或者仅一行的横向的md5值,也即目标散列值。本实施例中年再次md5运算的目的是为了避免sql语句超长,有些关系型数据库会限制sql语句的长度。

可选的,所述获取所述目标散列值预设位置的字符串取值,包括:

提取所述目标散列值的预设位置的字符数据,并对提取出的字符数据进行ascii转换;

顺序拼接ascii转换后的所述字符数据,以获得所述字符串取值。

具体的,提取所述第二散列值的预设位置的字符数据可以通过如下方式实现,在前述获得的仅1列的纵向或者仅一行的横向的md5值的基础上,对该列中或者该行中每一个第二散列值(md5值)进行循环遍历。图2中给出了仅1列的纵向md5值情况下的遍历示意,具体的遍历方式可以是,对于在第9-给定位置的字符取出,例如将9-13位置的字符取出,当然也可以是其他值,取的越高值会越精确,取值越高存在一定风险,取值越高可能会导致某些数据库sql语句长度限制。当然对于仅一行的横向的md5值的遍历方式也可以采用类似的技术手段在此不再赘述。

然后,将提取到的字符数据进行ascii转换,并将转换后的值进行横向字符串拼接,从而获得所述字符串取值。例如a的ascii码是65,则本实施例中aaa的拼接对应的字符串取值就是656565。

可选的,对所述字符串取值进行数学运算,以获得所述目标数据表的散列数据,包括:

对所述字符串取值求和,求和的结果即为所述目标数据表的散列数据。

在一种可选的实施方式中,对字符串取值进行求和,从而获得所述目标数据表的散列数据。

可选的,对所述字符串取值进行数学运算,以获得所述目标数据表的散列数据,包括:

将所述字符串取值除以给定值,以确定中间值;

顺序求和所述中间值,以获得所述目标数据表的散列数据。

在另一种可选的实施方式中,由于前述提取到预设位置的字符数据进行转换后的结果的字符串取值可能会非常大,本实施例中为了进一步提高数据的可读性,可以将上一步的字符串取值除以给定的极大整数,例如百万/亿等,让结果可读性更高,然后再对除以给定的极大整数后的中间值进行求和,从而获得所述目标数据表的散列数据。在具体实现过程中,在获得较高可读性的中间值数据之后,可以进一步进行纵向或者横向相加求和,具体可以使用关系型数据库sum内置函数,得到最终目标数据表的散列数据。

通过上述方法可以将任意数据表转换成一个散列数据,由此解决了现有技术无法对一张关系型数据库数据表进行散列算法的缺陷。

可选的,获得所述目标数据表的散列数据之后,还包括:

比对不同目标数据表的散列数据,完成不同目标数据表的数据一致性校验。

现有的关系型数据库没有对数据表提供散列算法的方法,想要比对两张表数据的一致性,就必须通过人工干预,且成本较高。本发明可以通过创建函数的办法,求得一个散列数据,然后通过数据比对完成两张表数据的一致性检验。如图3所示,对于数据表相同的数据,使用本发明方法可以做到采用同样的散列算法,然后进行数据一致性的校验。

综上通过本发明方法解决了同构或异构关系型数据库表与表之间无法进行数据一致性比对的缺陷,以及可以判定关系型数据库数据表数据是否有变化。

实施例二

本发明第二实施例提出一种数据表处理装置,包括:

散列值计算模块,用于确定目标数据表的目标散列值;

提取模块,用于获取所述目标散列值预设位置的字符串取值;

数学运算模块,用于对所述字符串取值进行数学运算,以获得所述目标数据表的散列数据。

本发明通过确定目标数据表的散列值,然后获取所述散列值预设位置的字符串取值,接着对所述字符串取值进行数学运算,由此可以确定出整张数据表的散列数据,有效提高了数据表的运算以及校验效率。

可选的,散列值计算模块,包括:

散列值计算单元,用于确定所述目标数据表的不同数据位对应数据的第一散列值;

第一拼接单元,用于拼接所述第一散列值,以获得中间散列数据。

散列值计算单元,还用于确定所述中间散列数据的第二散列值,第二散列值即为目标散列值。

具体地说,本实施例中确定所述目标数据表的列数据对应的第一散列值,可以对于目标数据表中的每列数据,利用数据库内置的md5函数求得对应每列数据的第一散列值,具体的关系型数据库提供的md5函数,会生成一个32位的散列值,32位比16位的散列值更安全。在一种可选的实施方式中目标数据表可以是关系型数据库中的数据表,例如同构关系型数据库中的数据表或者异构关系型数据库中的数据表。在求的对应每列数据的第一散列值之后,将每列求得对应的md5散列值的字符串进行横向拼接。拼接后的效果就是将n列合并成1列的字符串,如果字段非常多,值会比较长。

第一拼接单元,具体用于根据所述目标数据表的行列关系顺序拼接不同数据位对应数据的所述第一散列值。

本实施例中所述目标数据表包括行数据位和列数据位,其中每个数据位上记录有对应的数据;

第一拼接单元,具体还用于对于所述目标数据表的每行数据对应的所述第一散列值按照列顺序拼接;或者,

对于所述目标数据表的每列数据对应的所述第一散列值按照行顺序拼接。

具体的,可以将n列合并成1列的字符串获得列散列数据之后,本实施例中进一步对获得的散列数据进行md5获取散列值,由此可以获得仅1列的纵向md5值,也即第二散列值。本实施例中年再次md5运算的目的是为了避免sql语句超长,有些关系型数据库会限制sql语句的长度。

可选的,提取模块,包括:

字符数据提取单元,用于提取所述目标散列值的预设位置的字符数据;

转换单元,用于对提取出的字符数据进行ascii转换;

第二拼接单元,用于顺序拼接ascii转换后的所述字符数据,以获得所述字符串取值。

具体的,提取所述第二散列值的预设位置的字符数据可以通过如下方式实现,在前述获得的32位的目标散列值的基础上,对每行的第二散列值(md5值)进行循环遍历,具体的遍历方式可以是,在第9-给定位置的字符取出,例如将9-13位置的字符取出,当然也可以是其他值,取的越高值会越精确,取值越高存在一定风险,取值越高可能会导致某些数据库sql语句长度限制。

然后,将提取到的字符数据进行ascii转换,并将转换后的值进行横向字符串拼接,例如a的ascii码是65,则本实施例中aaa的拼接结果就是656565。

数学运算模块,用于对所述字符串取值求和,求和的结果即为所述目标数据表的散列数据。

在一种可选的实施方式中,对字符串取值进行求和,从而获得所述目标数据表的散列数据。

可选的,数学运算模块,还用于将所述字符串取值除以给定值,以确定中间值;

顺序求和所述中间值,以获得所述目标数据表的散列数据。

具体的,由于前述提取预设位置的字符数据进行转换后结果的值可能会非常大,本实施例中为了进一步提高数据的可读性,可以将上一步的结果除以给定的极大整数,例如百万/亿等,让结果可读性更高。

在获得较高可读性的中间值数据之后,可以进一步进行纵向相加求和,具体可以使用关系型数据库sum内置函数,得到最终的一个散列数据。

通过上述方法可以将任意数据表转换成一个散列数据,由此解决了现有技术无法对一张关系型数据库数据表进行散列算法的缺陷。

还包括:比对模块,用于比对不同目标数据表的散列数据,完成不同目标数据表的数据一致性校验。

现有的关系型数据库没有对数据表提供散列算法的方法,想要比对两张表数据的一致性,就必须通过人工干预,且成本较高。本发明可以通过创建函数的办法,求得一个散列数据,然后通过数据比对完成两张表数据的一致性检验。对于数据表相同的数据,使用本发明可以做到采用同样的散列算法,然后进行数据一致性的校验。

实施例三

本发明第三实施例提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现实施例一的数据表处理方法的步骤。

在一种可选的实施例中所述计算机程序被处理器执行时实现

确定目标数据表的目标散列值;

获取所述目标散列值预设位置的字符串取值;

对所述字符串取值进行数学运算,以获得所述目标数据表的散列数据。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1