CN115422238A - 语句验证方法和装置 - Google Patents

语句验证方法和装置 Download PDF

Info

Publication number
CN115422238A
CN115422238A CN202211039900.8A CN202211039900A CN115422238A CN 115422238 A CN115422238 A CN 115422238A CN 202211039900 A CN202211039900 A CN 202211039900A CN 115422238 A CN115422238 A CN 115422238A
Authority
CN
China
Prior art keywords
database
statement
record
result set
target
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211039900.8A
Other languages
English (en)
Inventor
彭逆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Construction Bank Corp
CCB Finetech Co Ltd
Original Assignee
China Construction Bank Corp
CCB Finetech Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Construction Bank Corp, CCB Finetech Co Ltd filed Critical China Construction Bank Corp
Priority to CN202211039900.8A priority Critical patent/CN115422238A/zh
Publication of CN115422238A publication Critical patent/CN115422238A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种语句验证方法和装置,涉及数据库迁移技术领域。该方法的一具体实施方式包括:在原数据库中执行原执行语句,以得到第一结果集;在目标数据库中执行目标执行语句,以得到第二结果集,所述目标执行语句为所述原执行语句在所述目标数据库中的改造语句;确定所述第一结果集与所述第二结果集的比对结果;根据所述比对结果,确定所述目标执行语句的验证结果。该实施方式能够减少验证改造后的执行语句所需的人工成本,且效率较高。

Description

语句验证方法和装置
技术领域
本发明涉及数据库迁移技术领域,尤其涉及一种语句验证方法和装置。
背景技术
出于技术、成本及性能等多方面的考虑,可能需要对应用系统涉及到的数据库进行迁移改造。由于不同数据库的语法、特性等都存在差异,所以需要对改造后的数据库执行语句进行验证,以保证数据库迁移改造之后,应用系统能够正常运转。
一般情况下,都是在数据库改造完成后,执行改造后的执行语句,人工观察改造后的执行语句是否具有原执行语句的功能。这种语句验证方式需要的人工成本较高,且效率较低。
发明内容
有鉴于此,本发明实施例提供一种语句验证方法和装置,能够减少验证改造后的执行语句所需的人工成本,且效率较高。
第一方面,本发明实施例提供了一种语句验证方法,包括:
在原数据库中执行原执行语句,以得到第一结果集;
在目标数据库中执行目标执行语句,以得到第二结果集,所述目标执行语句为所述原执行语句在所述目标数据库中的改造语句;
确定所述第一结果集与所述第二结果集的比对结果;
根据所述比对结果,确定所述目标执行语句的验证结果。
可选地,所述原执行语句为查询语句;
所述在原数据库中执行原执行语句,以得到第一结果集,包括:
在所述原数据库中执行原执行语句,得到所述原执行语句的第一查询结果;
将所述第一查询结果作为所述第一结果集;
所述在目标数据库中执行目标执行语句,以得到第二结果集,包括:
在所述目标数据库中执行所述目标执行语句,得到所述目标执行语句的第二查询结果;
将所述第二查询结果作为所述第二结果集。
可选地,所述原执行语句为修改语句或增加语句;
所述在原数据库中执行原执行语句,以得到第一结果集,包括:
在所述原数据库中执行所述原执行语句;
从所述原数据库中,确定出所述原执行语句对应的第一数据库记录;
根据所述第一数据库记录,生成所述第一结果集;
所述在目标数据库中执行目标执行语句,以得到第二结果集,包括:
在所述目标数据库中执行所述目标执行语句;
从所述目标数据库中,确定出所述目标执行语句对应的第二数据库记录;
根据所述第二数据库记录,生成所述第二结果集。
可选地,所述原执行语句为删除语句;
所述在原数据库中执行原执行语句,以得到第一结果集,包括:
在所述原数据库中执行原执行语句;
根据所述原数据库的日志,确定出所述原执行语句对应的第一删除记录;
根据所述第一删除记录,生成所述第一结果集;
所述在目标数据库中执行目标执行语句,以得到第二结果集,包括:
在所述目标数据库中执行目标执行语句;
根据所述目标数据库的日志,确定出所述目标执行语句对应的第二删除记录;
根据所述第二删除记录,生成所述第二结果集。
可选地,所述确定所述第一结果集与所述第二结果集的比对结果,包括:
确定所述第一结果集中的第一记录的数目与所述第二结果集中的第二记录的数目是否相等;
响应于所述第一记录的数目与所述第二记录的数目相等,确定所述第一记录是否与所述第二记录一一对应;响应于所述第一记录与所述第二记录一一对应,确定所述比对结果表征所述第一结果集与所述第二结果集匹配;
响应于所述第一记录的数目与所述第二记录的数目不相等,确定所述比对结果表征所述第一结果集与所述第二结果集不匹配。
可选地,所述确定所述第一记录是否与所述第二记录一一对应,包括:
从所述第一结果集中确定出当前第一记录;
从所述第二结果集中确定出当前第二记录;
将所述当前第一记录中的各第一字段分别与所述当前第二记录中的第二字段进行比对;
响应于各所述第一字段均与所述第二字段一致,确定所述当前第一记录与所述当前第二记录相对应;从所述第一结果集中确定出所述当前第一记录的下一第一记录,从所述第二结果集中确定出所述当前第二记录的下一第二记录;确定所述下一第一记录与所述下一第二记录是否相对应;以此类推,直至各所述第一记录均与所述第二记录相对应,确定所述第一记录与所述第二记录一一对应;
响应于所述第一字段与所述第二字段不一致,确定所述第一记录不与所述第二记录一一对应。
可选地,所述将所述当前第一记录中的各第一字段分别与所述当前第二记录中的第二字段进行比对,包括:
从所述当前第一记录中确定出第一字段;
确定所述第一字段是否为忽略字段;
响应于所述第一字段不为忽略字段,从所述当前第二记录中确定出所述第一字段对应的第二字段;响应于所述第一字段的取值等于所述第二字段的取值,确定所述第一字段与第二字段一致;
响应于所述当前第一字段为忽略字段,确定所述第一字段与第二字段一致。
可选地,所述根据所述比对结果,确定所述目标执行语句的验证结果,包括:
响应于所述比对结果表征所述第一结果集与所述第二结果集匹配,确定所述验证结果表征所述目标执行语句通过正确性验证;
响应于所述比对结果表征所述第一结果集与所述第二结果集不匹配,确定所述验证结果表征所述目标执行语句未通过正确性验证。
可选地,所述在目标数据库中执行目标执行语句之前,还包括:
确定所述原数据中的数据库对象;
根据所述数据库对象,生成初始化语句;
在所述目标数据库中执行所述初始化语句。
第二方面,本发明实施例提供了一种语句验证装置,包括:
第一执行模块,用于在原数据库中执行原执行语句,以得到第一结果集;
第二执行模块,用于在目标数据库中执行目标执行语句,以得到第二结果集,所述目标执行语句为所述原执行语句在所述目标数据库中的改造语句;
比对模块,用于确定所述第一结果集与所述第二结果集的比对结果;
验证模块,用于根据所述比对结果,确定所述目标执行语句的验证结果。
可选地,所述原执行语句为查询语句;
所述第一执行模块具体用于:
在所述原数据库中执行原执行语句,得到所述原执行语句的第一查询结果;
将所述第一查询结果作为所述第一结果集;
所述第二执行模块具体用于:
在所述目标数据库中执行所述目标执行语句,得到所述目标执行语句的第二查询结果;
将所述第二查询结果作为所述第二结果集。
可选地,所述原执行语句为修改语句或增加语句;
所述第一执行模块具体用于:
在所述原数据库中执行所述原执行语句;
从所述原数据库中,确定出所述原执行语句对应的第一数据库记录;
根据所述第一数据库记录,生成所述第一结果集;
所述第二执行模块具体用于:
在所述目标数据库中执行所述目标执行语句;
从所述目标数据库中,确定出所述目标执行语句对应的第二数据库记录;
根据所述第二数据库记录,生成所述第二结果集。
第三方面,本发明实施例提供了一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一实施例所述的方法。
第四方面,本发明实施例提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一实施例所述的方法。
第五方面,本发明实施例提供了一种计算机程序产品,包括计算机程序,所述程序被处理器执行时实现上述任一实施例所述的方法。
上述发明中的一个实施例具有如下优点或有益效果:在原数据库中执行原执行语句,得到第一结果集。在目标数据库中执行目标执行语句,得到第二结果集。通过第一结果集与第二结果集的比对结果,确定目标执行语句的验证结果。语句验证过程中,涉及的执行过程及比对过程都可以由系统自动完成。因此,相比人工验证的方式,能够减少验证改造后的执行语句所需的人工成本,且效率较高。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是本发明第一实施例提供的一种语句验证方法的流程示意图;
图2是本发明第二实施例提供的一种结果集比对方法的流程示意图;
图3是本发明第三实施例提供的一种语句验证方法的流程示意图;
图4是本发明第四实施例提供的一种结果集比对方法的流程示意图;
图5是本发明的实施例提供的一种语句验证装置的结构示意图;
图6是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本申请技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
在数据库迁移改造过程中,由于不同数据库原理及运行方式等不同,需要对原数据库对应的执行语句进行改造。为保证系统正常运行,还需要对改造后的语句进行验证。对于比较复杂的查询语句,如多层子查询嵌套、分组排序等复杂场景,仅仅通过简单的人工验证或者应用系统功能验证,很容易出现漏检的情况,需要通过更精细的验证才能发现。
针对上述问题,本发明实施例提供了一种语句验证方法,能够解决上述问题。图1是本发明第一实施例提供的一种语句验证方法的流程示意图,如图1所示,该方法包括:
步骤101:在原数据库中执行原执行语句,以得到第一结果集。
原数据库是数据库迁移改造之前,系统所使用的数据库。原数据库可以为:oracle、DB2、sqlserver、mysql等。
原执行语句为系统中操作原数据库涉及的SQL语句。SQL语句是一种数据库操作语言,用于对数据库进行数据存取以及查询。可以通过扫描系统代码、数据库存储过程等方式,获取原执行语句。
在原数据库中执行原执行语句之后,得到第一结果集。第一结果集用于存储原执行语句所涉及的原数据库中的数据记录。
步骤102:在目标数据库中执行目标执行语句,以得到第二结果集,目标执行语句为原执行语句在目标数据库中的改造语句。
目标数据库是数据库迁移改造之后,系统所使用的数据库。目标数据库可以为:oracle、DB2、sqlserver、mysql等。目标数据库与原数据库的数据库类型或数据库版本不同。
目标执行语句为原执行语句在目标数据库中的改造语句。由于原数据库与目标数据库的语法、特性等存在差异,所以需要针对目标数据库,对原执行语句进行改写,以得到目标执行语句。
在目标数据库中执行目标执行语句之后,得到第二结果集。第二结果集用于存储目标执行语句所涉及的目标数据库中的数据记录。
在目标数据库中执行目标执行语句之后,接收到针对目标执行语句的执行错误信息,发送针对目标执行语句的报错提醒。由于目标执行语句为原执行语句在目标数据库中的改造语句,目标执行语句中难免存在错误,如果接收到执行错误信息,则向相关人员发送报错提醒,以使相关工作人员发现并纠正目标执行语句中存在的错误。
步骤103:确定第一结果集与第二结果集的比对结果。
比对结果用于表征第一结果集与第二结果集匹配是否匹配。在第一结果集与第二结果集中的记录一一对应的情况下,确定第一结果集与第二结果集匹配。在第一结果集与第二结果集中的记录不一一对应的情况下,确定第一结果集与第二结果集不匹配。
步骤104:根据比对结果,确定目标执行语句的验证结果。
如果比对结果表征第一结果集与第二结果集匹配,确定验证结果表征目标执行语句通过正确性验证。如果比对结果表征第一结果集与第二结果集不匹配,确定验证结果表征目标执行语句未通过正确性验证。
在本发明实施例中,在原数据库中执行原执行语句,得到第一结果集。在目标数据库中执行目标执行语句,得到第二结果集。通过第一结果集与第二结果集的比对结果,确定目标执行语句的验证结果。语句验证过程中,涉及的执行过程及比对过程都可以由系统自动完成。因此,相比人工验证的方式,能够减少验证改造后的执行语句所需的人工成本,且效率较高。
原执行语句可以为不同类型的执行语句。以下分别针对原执行语句为查询语句、修改或增加语句、删除语句的情况,阐述结果集的生成方式。
在原执行语句为查询语句的情况下,在原数据库中执行原执行语句,得到原执行语句的第一查询结果;将第一查询结果作为第一结果集。在目标数据库中执行目标执行语句,得到目标执行语句的第二查询结果;将第二查询结果作为第二结果集。
如果原执行语句为查询语句,则目标执行语句也为查询语句。在原数据库中执行原执行语句,直接将执行原执行语句得到的查询结果作为第一结果集。在目标数据库中执行目标执行语句,直接将执行目标执行语句得到的查询结果作为第二结果集。
在原执行语句为修改语句或增加语句的情况下,在原数据库中执行原执行语句;从原数据库中,确定出原执行语句对应的第一数据库记录;根据第一数据库记录,生成第一结果集。在目标数据库中执行目标执行语句;从目标数据库中,确定出目标执行语句对应的第二数据库记录;根据第二数据库记录,生成第二结果集。
如果原执行语句为修改语句或增加语句,则目标执行语句也为修改语句或增加语句。在原数据库中执行原执行语句,通过原执行语句在原数据库中,修改或增加一条或多条第一数据库记录。可先获取原执行语句的执行时间,或原执行语句中包含的特征数据,再根据执行时间或特征数据,从原数据库中获取到各第一数据库记录,组合各第一数据库记录,得到第一结果集。
在目标数据库中执行目标执行语句,通过目标执行语句在目标数据库中,修改或增加一条或多条第二数据库记录。可先获取目标执行语句的执行时间,或目标执行语句中包含的特征数据,再根据执行时间或特征数据,从目标数据库中获取到各第二数据库记录,组合各第二数据库记录,得到第二结果集。
在原执行语句为删除语句的情况下,在原数据库中执行原执行语句;根据原数据库的日志,确定出原执行语句对应的第一删除记录;根据第一删除记录,生成第一结果集。在目标数据库中执行目标执行语句;根据目标数据库的日志,确定出目标执行语句对应的第二删除记录;根据第二删除记录,生成第二结果集。
数据库日志用于记录数据库运行期间针对数据库的各种操作情况信息。如果原执行语句为删除语句,则目标执行语句也为删除语句。原执行语句用于在原数据库中删除至少一个第一删除记录。在原数据库中执行原执行语句之后,可先确定原执行语句的执行时间,再根据执行时间从原数据库的日志,查找出各第一删除记录,组合各第一删除记录得到第一结果集。
目标执行语句用于在目标数据库中删除至少一个第二删除记录。在目标数据库中执行目标执行语句之后,可确定目标执行语句的执行时间,再根据执行时间从目标数据库的日志,查找出各第二删除记录,组合各第二删除记录得到第二结果集。
为了确定第一结果集与第二结果集的比对结果,本发明实施例还提供了一种结果集比对方法。图2是本发明第二实施例提供的一种结果集比对方法的流程示意图。如图2所示,该方法包括:
步骤201:确定第一结果集中的第一记录的数目与第二结果集中的第二记录的数目是否相等。
在第一记录的数目与第二记录的数目相等的情况下,执行步骤202。在第一记录的数目与第二记录的数目不相等的情况下,则直接确定第一结果集与第二结果集不匹配,执行步骤204。
步骤202:确定第一记录是否与第二记录一一对应。
第一记录与第二记录一一对应,指第一结果集中的元素与第二结果集中的元素之间是一对一的关系。在第一记录与第二记录一一对应的情况下,执行步骤203。在第一记录与第二记录不一一对应的情况下,确定第一结果集与第二结果集不匹配,执行步骤204。
可通过下述方式对结果集中的记录进行比对:从第一结果集中确定出当前第一记录;从第二结果集中确定出当前第二记录;将当前第一记录中的各第一字段分别与当前第二记录中的第二字段进行比对;响应于各第一字段均与第二字段一致,确定当前第一记录与当前第二记录相对应;从第一结果集中确定出当前第一记录的下一第一记录,从第二结果集中确定出当前第二记录的下一第二记录;确定下一第一记录与下一第二记录是否相对应;以此类推,直至各第一记录均与第二记录相对应,确定第一记录与第二记录一一对应;响应于第一字段与第二字段不一致,确定第一记录不与第二记录一一对应。
当前第二记录为第二结果集中与当前第一记录对应的记录。当前第一记录来源于原数据库中的第一数据表。当前第二记录来源于目标数据库中的第二数据表。第二数据表可以与第一数据表具有相同或相应的表名。确定出当前第一记录之后,可通过主键、关键字、操作时间戳、执行顺序等,从第二数据表中确定出当前第二记录。
如果第一记录中的各第一字段分别与第二记录中的各第二字段一致,则确定第一记录与第二记录相对应。如果存在第一字段与第二字段不一致,则确定第一记录与第二记录不对应,并确定第一结果集与第二结果集不匹配,停止结果集的比对循环。
如果第一结果集中的各第一记录分别与第二结果集中的各第二记录相对应,则确定第一结果集与第二结果集匹配。
可通过下述方式对记录中的字段进行比对:从当前第一记录中确定出第一字段;确定第一字段是否为忽略字段;响应于第一字段不为忽略字段,从当前第二记录中确定出第一字段对应的第二字段;响应于第一字段的取值等于第二字段的取值,确定第一字段与第二字段一致;响应于当前第一字段为忽略字段,确定第一字段与第二字段一致。
忽略字段为不需要进行比对的字段。可根据需要设置为忽略字段。忽略字段可以为插入时间、自增主键等。
第一字段为第一记录中的字段。第二字段为第二记录中与第一字段对应的字段。第二字段可以与第一字段具有相同或相应的字段名。
如果第一字段为忽略字段,则直接确定第一字段与第二字段一致。如果第一字段不为忽略字段,则确定第一字段的取值是否等于第二字段的取值。如果第一字段的取值不等于第二字段的取值,则确定第一字段与第二字段不一致,进而确定第一记录与第二记录不对应。如果第一字段的取值等于第二字段的取值,则确定第一字段与第二字段一致。
步骤203:确定比对结果表征第一结果集与第二结果集匹配。
步骤204:确定比对结果表征第一结果集与第二结果集不匹配。
在本发明实施例中,先确定第一结果集中的记录数目与第二结果集中的记录数目是否相等,如果相等,再进一步比较第一记录是否与第二记录一一对应。本发明实施例提供了一种快速能够准确确定出两结果集是否匹配的方案。
图3是本发明第三实施例提供的一种语句验证方法的流程示意图,如图3所示,该方法包括:
步骤301:确定原数据中的数据库对象;根据数据库对象,生成初始化语句。
数据库对象包括:表,索引,视图,图表,缺省值,规则,触发器,用户,函数等。初始化语句用于在目标数据库中创建与原数据库相同的各数据库对象。
步骤302:在目标数据库中执行初始化语句。
步骤303:在原数据库中执行原执行语句,以得到第一结果集。
步骤304:在目标数据库中执行目标执行语句,以得到第二结果集,目标执行语句为原执行语句在目标数据库中的改造语句。
步骤305:确定第一结果集与第二结果集的比对结果。
步骤306:根据比对结果,确定目标执行语句的验证结果。
在本发明实施例中,通过初始化语句,在目标数据库中创建与原数据相同的数据库对象。只有在原数据库与目标数据中包含相同数据库对象的情况下,才能通过结果集比对的方式,准确验证目标执行语句的正确性。
为使本发明实施例的方案更加便于理解。下面阐述如何将本发明实施例的方案应用于数据库国产化改造的方案中。首先,配置2个数据源:原来的商用数据库、改造后的国产数据库。商用数据库对应于原数据库,国产数据库对应于目标数据库。在测试准备阶段,在两个数据库构造好相同的数据对象。在两数据库中建立好相同的业务表结构,并将相同的数据插入到两数据库中。
在测试阶段,在原数据库调用原执行语句,在目标数据库中调用目标执行语句,分别得到出第一结果集及第二结果集。将第一结果集及第二结果集调到内存中来进行比对。根据比对结果确定目标执行语句的正确性。
为了高效地对第一结果集及第二结果集进行比对。本发明实施例还提供了一种通用的结果集对比方法。图4是本发明第四实施例提供的一种结果集比对方法的流程示意图。如图4所示,先传入第一结果集、第二结果集及忽略字段列表。忽略字段列表用于存储发生了变化也不影响业务的字段,如插入时间等。
在比较过程中,采取反射的技术,依次对比2个结果集中的每一个对象的字段。具体地,确定第一结果集与第二结果集的长度是否相等。如果不相等,确定目标执行语句未通过验证。如果相等,确定第一结果集是否为空。如果为空,确定目标执行语句通过验证。
如果不为空,分别从第一结果集及第二结果集中取出下一数据记录,并从第一结果集及第二结果集中删除取出的记录;确定两个取出的记录是否匹配。如果匹配,重新执行确定第一结果集是否为空的步骤。如果不匹配,确定目标执行语句未通过验证。
对两个数据记录是否匹配时,确定第一数据记录中的字段是否都完成比对。如果是,则确定两个数据记录匹配。如果否,则分别从两个数据记录中确定出下一字段,确定下一字段的取值是否一致。如果一致,继续执行确定第一数据记录中的字段是否都完成比较的步骤。如果不一致,确定目标执行语句未通过验证。
在对改造语句进行验证时,开发人员对只需完成数据库初始化、执行原执行语句及执行目标执行语句的工作,结果集的对比验证工作可由系统自动完成。在提升验证准确率的同时,还能够提高验证效率。
本发明实施例的方案基于多数据源切换的前提,通过分别执行修改前后数据库的执行语句,得到两个结果集。再对结果集中的字段逐个对比,来自动完成改造语句的正确性验证。
图5是本发明的一个实施例提供的一种语句验证装置的结构示意图,如图5所示,该装置包括:
第一执行模块501,用于在原数据库中执行原执行语句,以得到第一结果集;
第二执行模块502,用于在目标数据库中执行目标执行语句,以得到第二结果集,所述目标执行语句为所述原执行语句在所述目标数据库中的改造语句;
比对模块503,用于确定所述第一结果集与所述第二结果集的比对结果;
验证模块504,用于根据所述比对结果,确定所述目标执行语句的验证结果。
可选地,所述原执行语句为查询语句;
所述第一执行模块501具体用于:
在所述原数据库中执行原执行语句,得到所述原执行语句的第一查询结果;
将所述第一查询结果作为所述第一结果集;
所述第二执行模块具体502用于:
在所述目标数据库中执行所述目标执行语句,得到所述目标执行语句的第二查询结果;
将所述第二查询结果作为所述第二结果集。
可选地,所述原执行语句为修改语句或增加语句;
所述第一执行模块501具体用于:
在所述原数据库中执行所述原执行语句;
从所述原数据库中,确定出所述原执行语句对应的第一数据库记录;
根据所述第一数据库记录,生成所述第一结果集;
所述第二执行模块502具体用于:
在所述目标数据库中执行所述目标执行语句;
从所述目标数据库中,确定出所述目标执行语句对应的第二数据库记录;
根据所述第二数据库记录,生成所述第二结果集。
可选地,所述原执行语句为删除语句;
第一执行模块501具体用于:
在所述原数据库中执行原执行语句;
根据所述原数据库的日志,确定出所述原执行语句对应的第一删除记录;
根据所述第一删除记录,生成所述第一结果集;
第二执行模块502具体用于:
在所述目标数据库中执行目标执行语句;
根据所述目标数据库的日志,确定出所述目标执行语句对应的第二删除记录;
根据所述第二删除记录,生成所述第二结果集。
可选地,所述比对模块503具体用于:
确定所述第一结果集中的第一记录的数目与所述第二结果集中的第二记录的数目是否相等;
响应于所述第一记录的数目与所述第二记录的数目相等,确定所述第一记录是否与所述第二记录一一对应;响应于所述第一记录与所述第二记录一一对应,确定所述比对结果表征所述第一结果集与所述第二结果集匹配;
响应于所述第一记录的数目与所述第二记录的数目不相等,确定所述比对结果表征所述第一结果集与所述第二结果集不匹配。
可选地,所述比对模块503具体用于:
从所述第一结果集中确定出当前第一记录;
从所述第二结果集中确定出当前第二记录;
将所述当前第一记录中的各第一字段分别与所述当前第二记录中的第二字段进行比对;
响应于各所述第一字段均与所述第二字段一致,确定所述当前第一记录与所述当前第二记录相对应;从所述第一结果集中确定出所述当前第一记录的下一第一记录,从所述第二结果集中确定出所述当前第二记录的下一第二记录;确定所述下一第一记录与所述下一第二记录是否相对应;以此类推,直至各所述第一记录均与所述第二记录相对应,确定所述第一记录与所述第二记录一一对应;
响应于所述第一字段与所述第二字段不一致,确定所述第一记录不与所述第二记录一一对应。
可选地,所述比对模块503具体用于:
从所述当前第一记录中确定出第一字段;
确定所述第一字段是否为忽略字段;
响应于所述第一字段不为忽略字段,从所述当前第二记录中确定出所述第一字段对应的第二字段;响应于所述第一字段的取值等于所述第二字段的取值,确定所述第一字段与第二字段一致;
响应于所述当前第一字段为忽略字段,确定所述第一字段与第二字段一致。
可选地,所述验证模块504具体用于:
响应于所述比对结果表征所述第一结果集与所述第二结果集匹配,确定所述验证结果表征所述目标执行语句通过正确性验证;
响应于所述比对结果表征所述第一结果集与所述第二结果集不匹配,确定所述验证结果表征所述目标执行语句未通过正确性验证。
可选地,该装置还包括:
初始化模块505,用于确定所述原数据中的数据库对象;
根据所述数据库对象,生成初始化语句;
在所述目标数据库中执行所述初始化语句。
本发明实施例提供了一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现上述任一实施例的方法。
本发明实施例提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现本发明实施例中的企业风险评估方法。
下面参考图6,其示出了适于用来实现本发明实施例的终端设备的计算机系统600的结构示意图。图6示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了根据本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:第一执行模块、第二执行模块、比对模块及验证模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,第一执行模块还可以被描述为“在原数据库中执行原执行语句,以得到第一结果集的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:
在原数据库中执行原执行语句,以得到第一结果集;
在目标数据库中执行目标执行语句,以得到第二结果集,所述目标执行语句为所述原执行语句在所述目标数据库中的改造语句;
确定所述第一结果集与所述第二结果集的比对结果;
根据所述比对结果,确定所述目标执行语句的验证结果。
根据本发明实施例的技术方案,在原数据库中执行原执行语句,得到第一结果集。在目标数据库中执行目标执行语句,得到第二结果集。通过第一结果集与第二结果集的比对结果,确定目标执行语句的验证结果。语句验证过程中,涉及的执行过程及比对过程都可以由系统自动完成。因此,相比人工验证的方式,能够减少验证改造后的执行语句所需的人工成本,且效率较高。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (15)

1.一种语句验证方法,其特征在于,包括:
在原数据库中执行原执行语句,以得到第一结果集;
在目标数据库中执行目标执行语句,以得到第二结果集,所述目标执行语句为所述原执行语句在所述目标数据库中的改造语句;
确定所述第一结果集与所述第二结果集的比对结果;
根据所述比对结果,确定所述目标执行语句的验证结果。
2.根据权利要求1所述的方法,其特征在于,所述原执行语句为查询语句;
所述在原数据库中执行原执行语句,以得到第一结果集,包括:
在所述原数据库中执行原执行语句,得到所述原执行语句的第一查询结果;
将所述第一查询结果作为所述第一结果集;
所述在目标数据库中执行目标执行语句,以得到第二结果集,包括:
在所述目标数据库中执行所述目标执行语句,得到所述目标执行语句的第二查询结果;
将所述第二查询结果作为所述第二结果集。
3.根据权利要求1所述的方法,其特征在于,所述原执行语句为修改语句或增加语句;
所述在原数据库中执行原执行语句,以得到第一结果集,包括:
在所述原数据库中执行所述原执行语句;
从所述原数据库中,确定出所述原执行语句对应的第一数据库记录;
根据所述第一数据库记录,生成所述第一结果集;
所述在目标数据库中执行目标执行语句,以得到第二结果集,包括:
在所述目标数据库中执行所述目标执行语句;
从所述目标数据库中,确定出所述目标执行语句对应的第二数据库记录;
根据所述第二数据库记录,生成所述第二结果集。
4.根据权利要求1所述的方法,其特征在于,所述原执行语句为删除语句;
所述在原数据库中执行原执行语句,以得到第一结果集,包括:
在所述原数据库中执行原执行语句;
根据所述原数据库的日志,确定出所述原执行语句对应的第一删除记录;
根据所述第一删除记录,生成所述第一结果集;
所述在目标数据库中执行目标执行语句,以得到第二结果集,包括:
在所述目标数据库中执行目标执行语句;
根据所述目标数据库的日志,确定出所述目标执行语句对应的第二删除记录;
根据所述第二删除记录,生成所述第二结果集。
5.根据权利要求1所述的方法,其特征在于,所述确定所述第一结果集与所述第二结果集的比对结果,包括:
确定所述第一结果集中的第一记录的数目与所述第二结果集中的第二记录的数目是否相等;
响应于所述第一记录的数目与所述第二记录的数目相等,确定所述第一记录是否与所述第二记录一一对应;响应于所述第一记录与所述第二记录一一对应,确定所述比对结果表征所述第一结果集与所述第二结果集匹配;
响应于所述第一记录的数目与所述第二记录的数目不相等,确定所述比对结果表征所述第一结果集与所述第二结果集不匹配。
6.根据权利要求5所述的方法,其特征在于,所述确定所述第一记录是否与所述第二记录一一对应,包括:
从所述第一结果集中确定出当前第一记录;
从所述第二结果集中确定出当前第二记录;
将所述当前第一记录中的各第一字段分别与所述当前第二记录中的第二字段进行比对;
响应于各所述第一字段均与所述第二字段一致,确定所述当前第一记录与所述当前第二记录相对应;从所述第一结果集中确定出所述当前第一记录的下一第一记录,从所述第二结果集中确定出所述当前第二记录的下一第二记录;确定所述下一第一记录与所述下一第二记录是否相对应;以此类推,直至各所述第一记录均与所述第二记录相对应,确定所述第一记录与所述第二记录一一对应;
响应于所述第一字段与所述第二字段不一致,确定所述第一记录不与所述第二记录一一对应。
7.根据权利要求6所述的方法,其特征在于,所述将所述当前第一记录中的各第一字段分别与所述当前第二记录中的第二字段进行比对,包括:
从所述当前第一记录中确定出第一字段;
确定所述第一字段是否为忽略字段;
响应于所述第一字段不为忽略字段,从所述当前第二记录中确定出所述第一字段对应的第二字段;响应于所述第一字段的取值等于所述第二字段的取值,确定所述第一字段与第二字段一致;
响应于所述当前第一字段为忽略字段,确定所述第一字段与第二字段一致。
8.根据权利要求1所述的方法,其特征在于,所述根据所述比对结果,确定所述目标执行语句的验证结果,包括:
响应于所述比对结果表征所述第一结果集与所述第二结果集匹配,确定所述验证结果表征所述目标执行语句通过正确性验证;
响应于所述比对结果表征所述第一结果集与所述第二结果集不匹配,确定所述验证结果表征所述目标执行语句未通过正确性验证。
9.根据权利要求1所述的方法,其特征在于,所述在目标数据库中执行目标执行语句之前,还包括:
确定所述原数据中的数据库对象;
根据所述数据库对象,生成初始化语句;
在所述目标数据库中执行所述初始化语句。
10.一种语句验证装置,其特征在于,包括:
第一执行模块,用于在原数据库中执行原执行语句,以得到第一结果集;
第二执行模块,用于在目标数据库中执行目标执行语句,以得到第二结果集,所述目标执行语句为所述原执行语句在所述目标数据库中的改造语句;
比对模块,用于确定所述第一结果集与所述第二结果集的比对结果;
验证模块,用于根据所述比对结果,确定所述目标执行语句的验证结果。
11.根据权利要求10所述的装置,其特征在于,所述原执行语句为查询语句;
所述第一执行模块具体用于:
在所述原数据库中执行原执行语句,得到所述原执行语句的第一查询结果;
将所述第一查询结果作为所述第一结果集;
所述第二执行模块具体用于:
在所述目标数据库中执行所述目标执行语句,得到所述目标执行语句的第二查询结果;
将所述第二查询结果作为所述第二结果集。
12.根据权利要求10所述的装置,其特征在于,所述原执行语句为修改语句或增加语句;
所述第一执行模块具体用于:
在所述原数据库中执行所述原执行语句;
从所述原数据库中,确定出所述原执行语句对应的第一数据库记录;
根据所述第一数据库记录,生成所述第一结果集;
所述第二执行模块具体用于:
在所述目标数据库中执行所述目标执行语句;
从所述目标数据库中,确定出所述目标执行语句对应的第二数据库记录;
根据所述第二数据库记录,生成所述第二结果集。
13.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-9中任一所述的方法。
14.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-9中任一所述的方法。
15.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-9中任一项所述的方法。
CN202211039900.8A 2022-08-29 2022-08-29 语句验证方法和装置 Pending CN115422238A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211039900.8A CN115422238A (zh) 2022-08-29 2022-08-29 语句验证方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211039900.8A CN115422238A (zh) 2022-08-29 2022-08-29 语句验证方法和装置

Publications (1)

Publication Number Publication Date
CN115422238A true CN115422238A (zh) 2022-12-02

Family

ID=84201316

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211039900.8A Pending CN115422238A (zh) 2022-08-29 2022-08-29 语句验证方法和装置

Country Status (1)

Country Link
CN (1) CN115422238A (zh)

Similar Documents

Publication Publication Date Title
CN111708804B (zh) 数据处理方法、装置、设备及介质
CN109002472B (zh) 一种数据库差异的识别方法及装置
CN111241111B (zh) 数据查询方法及装置、数据对比方法及装置、介质及设备
CN113626416A (zh) 数据校验的方法、装置、计算设备和存储介质
CN110688111A (zh) 业务流程的配置方法、装置、服务器和存储介质
CN114996288A (zh) 数据比对方法及装置、计算机存储介质、电子设备
CN112685312A (zh) 一种未覆盖代码的测试用例推荐方法及装置
CN110874364B (zh) 一种查询语句处理方法、装置、设备及存储介质
CN111159227A (zh) 数据查询方法、装置、设备及存储介质
CN114185791A (zh) 一种数据映射文件的测试方法、装置、设备及存储介质
CN112395307A (zh) 执行语句的方法、装置、服务器及存储介质
CN112905620A (zh) 数据查询方法及装置、电子设备、存储介质
CN113268470A (zh) 一种高效的数据库回滚方案验证方法
CN111737349A (zh) 数据一致性校验方法及装置
CN111290961A (zh) 接口测试的管理方法、装置及终端设备
CN115422238A (zh) 语句验证方法和装置
CN111427902B (zh) 基于轻量型数据库的元数据管理方法、装置、设备及介质
CN114721943A (zh) 测试范围的确定方法和装置
CN114356454A (zh) 对账数据处理方法、设备、存储介质及程序产品
CN114461454A (zh) 数据恢复方法、装置、存储介质及电子设备
CN110096435B (zh) 代码自动编写方法、装置、计算机设备和存储介质
CN109558153B (zh) 版本一致性确定方法、装置及系统
US20230129469A1 (en) Replication management system
CN116955321A (zh) 存储程序的逻辑对比方法及其装置、电子设备及存储介质
CN114694786A (zh) 一种医疗数据的查询方法、装置、设备和计算机存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination