1.本技术实施例涉及金融科技(fintech)领域,尤其涉及一种脚本处理方法、装置、电子设备及存储介质。
背景技术:
::2.随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技转变,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。在金融领域中,在编写执行脚本后,需要确定执行脚本是否符合预期。3.相关技术中,在执行脚本执行后,基于执行是否成功来确定执行脚本是否符合预期。然而,在实际应用中,会复用很多执行脚本,即一些执行脚本会重复执行,因此,上述方式难以精准、灵活地确定执行脚本是否符合预期。4.综上,目前亟需一种脚本处理方法,用以精准、灵活地确定执行脚本是否符合预期。技术实现要素:5.本技术实施例提供了一种脚本处理方法、装置、电子设备及存储介质,用以精准、灵活地确定执行脚本是否符合预期。6.第一方面,本技术实施例提供了一种脚本处理方法,该方法包括:7.针对任一待校验执行脚本,在对所述待校验执行脚本进行解析后,确定所述待校验执行脚本的类别;8.基于所述待校验执行脚本的类别,通过对应的目标生成方式生成所述待校验执行脚本的校验脚本;其中,所述校验脚本用于对对应的待校验执行脚本进行校验;9.若待校验执行脚本为数据变更脚本,且数据变更脚本的类别包括修改语句、关联插入语句以及删除语句;基于所述待校验执行脚本的类别,通过对应的目标生成方式生成所述待校验执行脚本的校验脚本,包括:10.若所述待校验执行脚本的类别为修改语句,则确定解析后所述待校验执行脚本中符合对应的过滤条件的第一字段,并生成所述第一字段的字段信息对应的校验脚本;11.若所述待校验执行脚本的类别为关联插入语句,则在确定出所有第二字段之后,确定是否有第二字段与解析后所述待校验执行脚本中的各字段匹配成功,并生成与第二字段匹配成功的字段的字段信息对应的校验脚本;其中,所述第二字段是类别为删除语句的待校验执行脚本中符合对应的过滤条件的第二字段。12.上述方案,通过对待校验执行脚本进行解析后,确定出各待校验执行脚本的类别;进而基于各待校验执行脚本的类别,通过对应的目标生成方式生成符合该待校验执行脚本校验要求的校验脚本,即使执行脚本需要重复执行,也能通过对应的校验脚本基于每次的执行结果精准地确定该执行脚本是否符合预期;另外,通过校验脚本进行校验,避免了存量数据、结构对执行脚本的影响;因此,本实施例能够精准、灵活地确定各待校验执行脚本是否符合预期;针对于数据发生变化的数据变更脚本,通过确定待校验执行脚本的类别为修改语句、删除语句还是关联插入语句,如果是修改语句,只需要确定哪些是满足对应的过滤条件的第一字段,只用生成各第一字段对应的校验脚本即可;如果是关联插入语句,需要在确定出所有第二字段之后,进一步确定类别为关联插入语句的待校验执行脚本中与第二字段匹配的字段,只用生成各这些字段对应的校验脚本即可,从而精准、详尽地确定各类数据变更脚本是否符合预期。13.一些可选的实施方式中,确定是否有第二字段与解析后所述待校验执行脚本中的各字段匹配成功,包括:14.针对解析后所述待校验执行脚本中的任一字段,确定是否有第二字段与所述字段的属性值相同,若是则确定有第二字段与所述字段匹配成功。15.一些可选的实施方式中,若所述待校验执行脚本为表结构变更脚本,且表结构变更脚本的类别包括建表语句以及变表语句;基于所述待校验执行脚本的类别,通过对应的目标生成方式生成所述待校验执行脚本的校验脚本,包括:16.若所述待校验执行脚本的类别为建表语句,则生成解析后所述待校验执行脚本中各项目标信息对应的校验脚本;其中,所述目标信息包括表信息、字段信息以及索引信息;17.若所述待校验执行脚本的类别为变表语句,则基于解析后所述待校验执行脚本的变表子类别,生成对应的校验脚本。18.上述方案,针对于结构发生变化的表结构变更脚本,通过确定待校验执行脚本的类别为建表语句还是变表语句,如果是建表语句,需要生成每一项表信息、字段信息以及索引信息分别对应的校验脚本,通过该校验脚本确定所要创建的表是否存在,该表中的字段相关信息是否和预期一致,该表中的索引相关信息是否和预期一致,从而精准地确定该执行脚本是否符合预期;如果是变表语句,基于其变表子类别可确定出是哪项信息发生了变化,通过生成变化项的信息对应的校验脚本,从而精准、高效地确定该执行脚本是否符合预期。19.一些可选的实施方式中,所述变表子类别包括字段变化以及索引变化;基于解析后所述待校验执行脚本的变表子类别,生成对应的校验脚本,包括:20.若解析后所述待校验执行脚本的变表子类别为字段变化,则生成解析后所述待校验执行脚本中各项字段信息对应的校验脚本;21.若解析后所述待校验执行脚本的变表子类别为索引变化,则生成解析后所述待校验执行脚本中各项索引信息对应的校验脚本。22.上述方案,通过确定待校验执行脚本的变表子类别为字段变化还是索引变化,只用生成变化项的信息对应的校验脚本即可,从而精准、高效地确定该待校验执行脚本是否符合预期。23.一些可选的实施方式中,若待校验执行脚本为数据变更脚本,且数据变更脚本的类别包括修改语句以及独立插入语句;基于所述待校验执行脚本的类别,通过对应的目标生成方式生成所述待校验执行脚本的校验脚本,包括:24.若所述待校验执行脚本的类别为修改语句,则确定解析后所述待校验执行脚本中符合对应的过滤条件的第一字段,并生成所述第一字段的字段信息对应的校验脚本;25.若所述待校验执行脚本的类别为独立插入语句,则生成解析后所述待校验执行脚本中各项字段信息对应的校验脚本。26.上述方案,针对于数据发生变化的数据变更脚本,通过确定待校验执行脚本的类别为修改语句还是独立插入语句,如果是修改语句,只需要确定哪些是满足过滤条件的第一字段,只用生成各第一字段对应的校验脚本即可;如果是独立插入语句,需要确定每一项字段信息对应的校验脚本,从而精准、详尽地确定各类数据变更脚本是否符合预期。27.一些可选的实施方式中,所述过滤条件包括等于条件、包含条件以及模糊条件中的部分或全部。28.一些可选的实施方式中,所述方法还包括:29.通过预设通知方式将包含生成的所有校验脚本的信息发送给预设人员;和/或30.通过预设通知方式将无法正确解析的待校验执行脚本发送给预设人员。31.上述方案,通过将包含生成的所有校验脚本的信息发送给预设人员,以使预设人员执行收到的校验脚本,在校验环境中对待校验执行脚本进行校验;通过将无法正确解析的待校验执行脚本发送给预设人员,以使预设人员对这些待校验执行脚本进行修改。32.第二方面,本技术实施例还提供了一种脚本处理装置,包括:33.脚本类别确定模块,用于针对任一待校验执行脚本,在对所述待校验执行脚本进行解析后,确定所述待校验执行脚本的类别;34.校验脚本生成模块,用于基于所述待校验执行脚本的类别,通过对应的目标生成方式生成所述待校验执行脚本的校验脚本;其中,所述校验脚本用于对对应的待校验执行脚本进行校验。35.第三方面,本技术实施例提供一种电子设备,包括至少一个处理器以及至少一个存储器,其中,所述存储器存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器执行上述第一方面任一所述的脚本处理方法。36.第四方面,本技术实施例提供一种计算机可读存储介质,其存储有可由电子设备执行的计算机程序,当所述程序在所述电子设备上运行时,使得所述电子设备执行上述第一方面任一所述的脚本处理方法。37.另外,第二至四方面中任一种实现方式所带来的技术效果可参见第一方面中不同实现方式所带来的技术效果,此处不再赘述。附图说明38.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。39.图1为本技术实施例提供的第一种脚本处理方法的流程示意图;40.图2为本技术实施例提供的第二种脚本处理方法的流程示意图;41.图3为本技术实施例提供的第三种脚本处理方法的流程示意图;42.图4为本技术实施例提供的第四种脚本处理方法的流程示意图;43.图5为本技术实施例提供的第五种脚本处理方法的流程示意图;44.图6为本技术实施例提供的脚本处理装置的结构示意图;45.图7为本技术实施例提供的电子设备的结构示意图。具体实施方式46.为了使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术作进一步地详细描述,显然,所描述的实施例仅仅是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。47.本技术实施例中术语“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。48.术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本技术的描述中,除非另有说明,“多个”的含义是两个或两个以上。49.术语“执行脚本”,是实现执行操作的结构化查询语言(structuredquerylanguage,sql);50.术语“校验脚本”,是实现校验操作的sql。51.在本技术的描述中,需要说明的是,除非另有明确的规定和限定,术语“连接”应做广义理解,例如,可以是直接相连,也可以通过中间媒介间接相连,可以是两个器件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本技术中的具体含义。52.在编写执行脚本后,需要确定执行脚本是否符合预期。相关技术中,在执行脚本执行后,基于执行是否成功来确定执行脚本是否符合预期。例如,执行脚本1执行成功,就认为执行脚本1符合预期,但实际应用中执行脚本1可能需要重复执行,执行脚本1可能会被漏执行,因此执行脚本1执行成功并不能说明其符合预期。因此,上述方式难以精准、灵活地确定执行脚本是否符合预期。53.鉴于此,本技术实施例提出一种脚本处理方法、装置、电子设备及存储介质,该方法包括:针对任一待校验执行脚本,在对所述待校验执行脚本进行解析后,确定所述待校验执行脚本的类别;基于所述待校验执行脚本的类别,通过对应的目标生成方式生成所述待校验执行脚本的校验脚本;其中,所述校验脚本用于对对应的待校验执行脚本进行校验。54.上述方案,通过对待校验执行脚本进行解析后,确定出各待校验执行脚本的类别;进而基于各待校验执行脚本的类别,通过对应的目标生成方式生成符合该待校验执行脚本校验要求的校验脚本,即使执行脚本需要重复执行,也能通过对应的校验脚本基于每次的执行结果精准地确定该执行脚本是否符合预期;另外,通过校验脚本进行校验,避免了存量数据、结构对执行脚本的影响;因此,本实施例能够精准、灵活地确定各待校验执行脚本是否符合预期。55.下面将结合附图及具体实施例,对本技术的技术方案以及本技术的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。56.本技术实施例提供第一种脚本处理方法,如图1所示,包括以下步骤:57.步骤s101:针对任一待校验执行脚本,在对所述待校验执行脚本进行解析后,确定所述待校验执行脚本的类别。58.上述待校验执行脚本可以有多种实现方式,一些实施例中,待校验执行脚本为表结构变更脚本,如数据定义语言(datadefinitionlanguage,ddl);一些实施例中,待校验执行脚本为数据变更脚本,如数据操纵语言(datamanipulationlanguage,dml)。59.示例性的,在对待校验执行脚本进行解析后,确定各待检验脚本的实现类,基于实现类可确定出待校验执行脚本的类别。60.本实施例对具体解析方式不做限定,如通过sqlstatementparser(一种开源解析工具)对待检验执行脚本进行解析。61.步骤s102:基于所述待校验执行脚本的类别,通过对应的目标生成方式生成所述待校验执行脚本的校验脚本。62.其中,所述校验脚本用于对对应的待校验执行脚本进行校验。63.实施中,不同类别的待校验执行脚本的数据结构是不同的,因此生成校验脚本的方式也是不同的,在确定待校验执行脚本的类别后,需要采用该类别所对应的目标生成方式生成校验脚本,从而在校验脚本被执行后,精准地校验对应的待校验执行脚本是否符合预期。64.上述方案,通过对待校验执行脚本进行解析后,确定出各待校验执行脚本的类别;进而基于各待校验执行脚本的类别,通过对应的目标生成方式生成符合该待校验执行脚本校验要求的校验脚本,即使执行脚本需要重复执行,也能通过对应的校验脚本基于每次的执行结果精准地确定该执行脚本是否符合预期;另外,通过校验脚本进行校验,避免了存量数据、结构对执行脚本的影响;因此,本实施例能够精准、灵活地确定各待校验执行脚本是否符合预期。65.如上所述,待校验执行脚本可以有多种实现方式,针对于待校验执行脚本为表结构变更脚本,表结构变更脚本的类别包括建表语句以及变表语句,本技术实施例提供第二种脚本处理方法,如图2所示,包括以下步骤:66.步骤s201:针对任一待校验执行脚本,在对所述待校验执行脚本进行解析后,确定所述待校验执行脚本的类别。67.该步骤s201的具体实现方式可参照上述实施例,此处不再赘述。68.步骤s202:若所述待校验执行脚本的类别为建表语句,则生成解析后所述待校验执行脚本中各项目标信息对应的校验脚本;其中,所述目标信息包括表信息、字段信息以及索引信息。69.在使用上述sqlstatementparser对待检验执行脚本进行解析时,建表语句的实现类为mysqlcreatetablestatement。70.建表语句表征需要创建新的表文件,待校验执行脚本(记作执行脚本1)如下所示:71.createtableifnotexists`table_temp`(72.`simple1`varchar(32)collateutf8_binnotnullcomment'列1',73.`index1`varchar(20)collateutf8_binnotnullcomment'列2,索引字段'74.key`idx1`(`index1`)75.key`idxgroup`(`simple1`,`index1`)76.)engine=innodbdefaultcharset=utf8collate=utf8_bincomment='订单主档表'77.上述示例只是类别为建表语句的待校验执行脚本的一种实现方式,本实施例对此不做具体限定。78.实施中,针对建表语句,生成解析后待校验执行脚本中每一项目标信息对应的校验脚本,包括表信息(如表的标识)对应的校验脚本,该检验脚本校验执行脚本执行后表是否存在;每项字段信息(如字段标识、字段类型以及字段长度等)对应的校验脚本,该校验脚本校验执行脚本执行后各字段的字段类型、字段长度等是否都和预期一致;每项单索引的索引信息(如索引标识、索引字段以及索引顺序等)对应的校验脚本,该校验脚本校验执行脚本执行后各单索引的索引字段、索引顺序等是否都和预期一致;每项组合索引的索引信息(如组合标识、索引字段以及索引顺序等)对应的校验脚本,该校验脚本校验执行脚本执行后各组合索引的索引字段、索引顺序等是否都和预期一致。79.本实施例可采用脚本生成器、拆分字符串等方式生成校验脚本,以采用脚本生成器生成执行脚本1中各项目标信息对应的校验脚本为例,通过表校验脚本生成器生成表信息对应的校验脚本:80.selectif(count(1)=1,'yes','700973')frominformation_schema.tableswheretable_schema=(selectdatabase())andtable_name='table_temp';81.通过字段校验脚本生成器生成字段信息对应的校验脚本:82.selectif(count(1)=1,'yes','990005')frominformation_schema.columnswheretable_schema=(selectdatabase())andtable_name='table_temp'andcolumn_name='simple1'andcolumn_type='varchar(32)'unionall83.selectif(count(1)=1,'yes',549802)frominformation_schema.columnswheretable_schema=(selectdatabase())andtable_name='table_temp'andcolumn_name='index1'andcolumn_type='varchar(20)';84.通过索引校验脚本生成器生成单索引的索引信息对应的校验脚本:85.selectif(count(1)=1,'yes','755409')frominformation_schema.statisticswheretable_schema=(selectdatabase())andtable_name='table_temp'andindex_name='index1'andcolumn_name='index1'andseq_in_index='1';86.通过索引校验脚本生成器生成组合索引的索引信息对应的校验脚本:87.selectif(count(1)=1,'yes','716281')frominformation_schema.statisticswheretable_schema=(selectdatabase())andtable_name='table_temp'andindex_name='idxgroup'andcolumn_name='simple1'andseq_in_index='1'unionall88.selectif(count(1)=1,'yes','57223')frominformation_schema.statisticswheretable_schema=(selectdatabase())andtable_name='table_temp'andindex_name='idxgroup'andcolumn_name='index1'andseq_in_index='2'。89.上述各校验脚本只是示例性说明,本技术并不以此为限。90.步骤s203:若所述待校验执行脚本的类别为变表语句,则基于解析后所述待校验执行脚本的变表子类别,生成对应的校验脚本。91.在使用上述sqlstatementparser对待检验执行脚本进行解析时,建表语句的实现类为sqlaltertablestatement。实现类为sqlaltertablestatement时,还对应有实现子类,基于实现子类可确定出解析后待校验执行脚本的变表子类别。92.一些可选的实施方式中,所述变表子类别包括字段变化以及索引变化;对应的,基于解析后所述待校验执行脚本的变表子类别,生成对应的校验脚本,可通过但不限于如下方式实现:93.若解析后所述待校验执行脚本的变表子类别为字段变化,则生成解析后所述待校验执行脚本中各项字段信息对应的校验脚本;94.若解析后所述待校验执行脚本的变表子类别为索引变化,则生成解析后所述待校验执行脚本中各项索引信息对应的校验脚本。95.示例性的,变表子类别为字段变化,实现子类为sqlaltertableaddcolumn(增加字段)或者mysqlaltertablemodifycolumn(修改字段);变表子类别为索引变化,实现子类为sqlaltertableaddindex(增加索引),sqlaltertabledropindex(删除索引)。如果实现子类为sqlaltertabledropindex,则在生成的校验脚本中count(1)=0。96.如上所述,本实施例可采用脚本生成器生成校验脚本,因此可通过字段校验脚本生成器生成字段信息对应的校验脚本:通过索引校验脚本生成器生成索引信息对应的校验脚本,此处不再赘述。97.本实施例,通过确定待校验执行脚本的变表子类别为字段变化还是索引变化,只用生成变化项的信息对应的校验脚本即可,从而精准、高效地确定该待校验执行脚本是否符合预期。98.上述方案,针对于结构发生变化的表结构变更脚本,通过确定待校验执行脚本的类别为建表语句还是变表语句,如果是建表语句,需要生成每一项表信息、字段信息以及索引信息分别对应的校验脚本,通过该校验脚本确定所要创建的表是否存在,该表中的字段相关信息是否和预期一致,该表中的索引相关信息是否和预期一致,从而精准地确定该执行脚本是否符合预期;如果是变表语句,基于其变表子类别可确定出是哪项信息发生了变化,通过生成变化项的信息对应的校验脚本,从而精准、高效地确定该执行脚本是否符合预期。99.针对于待校验执行脚本为数据变更脚本,本技术实施例提供第三种脚本处理方法,该实施例中数据变更脚本的类别包括修改语句以及独立插入语句,如图3所示,包括以下步骤:100.步骤s301:针对任一待校验执行脚本,在对所述待校验执行脚本进行解析后,确定所述待校验执行脚本的类别。101.该步骤s301的具体实现方式可参照上述实施例,此处不再赘述。102.步骤s302:若所述待校验执行脚本的类别为修改语句,则确定解析后所述待校验执行脚本中符合对应的过滤条件的第一字段,并生成所述第一字段的字段信息对应的校验脚本。103.在使用上述sqlstatementparser对待检验执行脚本进行解析时,修改语句的实现类为mysqlupdatestatement。104.示例性的,先确定解析后待校验执行脚本中各字段是否对应有函数计算,如果有,在计算出目标函数值后,用目标函数值替换该字段的字段属性值,例如:now()函数计算会转换成大于当天生成脚本的时间,这样能有效校验数据是否有更新过;set@varname函数计算会取对应varname的值放入生成的校验脚本中,以便精确匹配数据;105.将解析后待校验执行脚本中字段属性值符合对应的过滤条件(即where条件)的字符确定为第一字段;106.生成第一字段的字段信息对应的校验脚本,具体生成方式可参照上述实施例,此处不再赘述。107.另外,一些待校验执行脚本还带有限制条件(limit),对于这些待校验执行脚本还需要考虑limit的限制。108.下面以一个具体的示例进行说明,解析后待校验执行脚本为:109.updatetable_tmpseta=1,last_modified_datetime=now()wherec=2andd=3limit2;ꢀꢀ①110.updatetable_tmpseta=4,last_modified_datetime=now()wherec=5andd=6;ꢀꢀ②111.以①为例,先从脚本中读取表名table_tmp,然后读取where条件c=2,d=3,再读取set属性a=1,并将last_modified_datetime对应的now()函数转化成大于今天的日期,取出limit限制2,最后通过字段校验脚本生成器生成对应校验脚本,校验脚本如下:112.selectif(count(1)=2,'yes','492192')fromtable_tmpwherea=1andc=2andd=3and113.last_modified_datetime》=’2021-10-10’unionall114.selectif(count(1)》=1,'yes','153876')fromtable_tmpwherea=4andc=5andd=6and115.last_modified_datetime》=’2021-10-10’。116.上述示例只是为了更清楚地说明如何生成类别为修改语句的待校验执行脚本的校验脚本,但本技术对待校验执行脚本及其校验脚本的具体实现方式不做限定。117.本实施例对上述where条件的具体实现方式不做限定,如where条件可以为等于条件“=”、包含条件“in”或者模糊条件“like”等。118.步骤s303:若所述待校验执行脚本的类别为独立插入语句,则生成解析后所述待校验执行脚本中各项字段信息对应的校验脚本。119.实施中,预设有插入语句的不同处理模式,如果选择了独立处理插入语句模式,且待校验执行脚本的实现类表征插入语句,则确定待校验执行脚本的类别为独立插入语句。120.在使用上述sqlstatementparser对待检验执行脚本进行解析时,插入语句的实现类为mysqlinsertstatement。121.针对于类别为独立插入语句的待校验执行脚本,需要生成每项字段信息对应的校验脚本,具体实现方式可参照上述实施例,此处不再赘述。122.上述方案中,针对于数据发生变化的数据变更脚本,通过确定待校验执行脚本的类别为修改语句还是独立插入语句,如果是修改语句,只需要确定哪些是满足过滤条件的第一字段,只用生成各第一字段对应的校验脚本即可;如果是独立插入语句,需要确定每一项字段信息对应的校验脚本,从而精准、详尽地确定各类数据变更脚本是否符合预期。123.针对于待校验执行脚本为数据变更脚本,本技术实施例提供第四种脚本处理方法,该实施例中数据变更脚本的类别包括修改语句、关联插入语句以及删除语句,如图4所示,包括以下步骤:124.步骤s401:针对任一待校验执行脚本,在对所述待校验执行脚本进行解析后,确定所述待校验执行脚本的类别。125.步骤s402:若所述待校验执行脚本的类别为修改语句,则确定解析后所述待校验执行脚本中符合对应的过滤条件的第一字段,并生成所述第一字段的字段信息对应的校验脚本。126.该步骤s401~s402的具体实现方式可参照上述实施例,此处不再赘述。127.步骤s403:若所述待校验执行脚本的类别为关联插入语句,则在确定出所有第二字段之后,确定是否有第二字段与解析后所述待校验执行脚本中的各字段匹配成功,并生成与第二字段匹配成功的字段的字段信息对应的校验脚本。128.其中,所述第二字段是类别为删除语句的待校验执行脚本中符合对应的过滤条件的第二字段。129.在使用上述sqlstatementparser对待检验执行脚本进行解析时,删除语句的实现类为mysqldeletestatement。130.如上所述,实施中可以预设有插入语句的不同处理模式,如果选择了关联处理插入语句模式,且待校验执行脚本的实现类表征插入语句,则确定待校验执行脚本的类别为关联插入语句。该待校验执行脚本与类别为删除语句的待校验执行脚本关联。131.示例性的,将类别为删除语句的待校验执行脚本中字段属性值符合对应的过滤条件的字符确定为第二字段,在确定出所有第二字段后,才能将类别为关联插入语句的待校验执行脚本中各字段与第二字段匹配。132.一些可选的实施方式中,确定是否有第二字段与解析后所述待校验执行脚本中的各字段匹配成功,可通过但不限于如下方式实现:133.针对解析后所述待校验执行脚本中的任一字段,确定是否有第二字段与所述字段的属性值相同,若是则确定有第二字段与所述字段匹配成功。134.下面以解析后待校验执行脚本中字段a为例进行说明:135.如果字段a与第二字段1的表的标识相同,则确定字段a的属性值是否与第二字段1各属性的属性值相同,如果字段a的属性值与第二字段1各属性的属性值完全相同,该字段a与第二字段1匹配成功;136.只要字段a的属性值与第二字段1中的至少一个属性的属性值不相同,该字段a与第二字段1匹配失败;之后,将字段a与下一个第二字段进行匹配。137.一些可选的实施方式中,生成与第二字段匹配成功的字段的字段信息对应的校验脚本,可通过但不限于如下方式实现:138.针对关联字段,基于所述关联字段的字段信息关联生成对应的校验脚本;其中,所述关联字段为解析后所述待校验执行脚本中与相同的第二字段匹配成功的多个字段。139.对应的,在字段匹配过程中确定与每个第二字段匹配成功的字段数量。140.上述方案,针对于数据发生变化的数据变更脚本,通过确定待校验执行脚本的类别为修改语句、删除语句还是关联插入语句,如果是修改语句,只需要确定哪些是满足对应的过滤条件的第一字段,只用生成各第一字段对应的校验脚本即可;如果是关联插入语句,需要在确定出所有第二字段之后,进一步确定类别为关联插入语句的待校验执行脚本中与第二字段匹配的字段,只用生成各这些字段对应的校验脚本即可,从而精准、详尽地确定各类数据变更脚本是否符合预期。141.一些可选的实施方式中,针对于上述图4实施例,可以确定没有匹配第二字段的类别为关联插入语句的待校验执行脚本中的字段,以及没有匹配类别为关联插入语句的待校验执行脚本中的字段的第二字段;通过将这些字段对应的执行脚本发送给预设人员,以使预设人员基于该执行脚本确定是否有误删的字段以及插入错误的字段,从而实现灰度校验。142.本技术实施例提供第五种脚本处理方法,如图5所示,包括以下步骤:143.步骤s501:针对任一待校验执行脚本,在对所述待校验执行脚本进行解析后,确定所述待校验执行脚本的类别。144.步骤s502:基于所述待校验执行脚本的类别,通过对应的目标生成方式生成所述待校验执行脚本的校验脚本。145.该步骤s501~s502的具体实现方式可参照上述实施例,此处不再赘述。146.步骤s503:通过预设通知方式将包含生成的所有校验脚本的信息发送给预设人员;和/或通过预设通知方式将无法正确解析的待校验执行脚本发送给预设人员。147.本实施例,在通过步骤s501~s502生成各类待校验执行脚本的校验脚本之后,通过将包含生成的所有校验脚本的信息发送给预设人员,以使预设人员执行收到的校验脚本,在校验环境中对执行脚本进行校验。148.实施中,为了更加精准地定位校验不通过的执行脚本,可通过预设编码方式(如采用重复率低的6位随机编码方式)对校验脚本进行编码(通过不同的编码结果标识各校验脚本),并确定检验脚本与执行脚本之间的对应关系,这样就能快速、准确地定位到校验不通过的执行脚本。149.另外,上述待校验执行脚本中可能会有一些无法解析,或解析错误的执行脚本,实施中是无法生成这些执行脚本所对应的校验脚本,基于此,通过将这些执行脚本发送给预设人员,以使预设人员对这些执行脚本进行修改。150.一些可选的实施方式中,还可确定这些执行脚本无法正确解析的原因,将原因与对应的执行脚本一起发送给预设人员。151.本实施例对确定无法正确解析的原因的方式不做具体限定,如将无法解析的待校验执行脚本的原因确定为语法错误;将能够解析但无法识别类别的待校验执行脚本的原因确定为类别错误。152.以上述图2实施例为例,如果通过格式兼容转换依旧无法解析待校验执行脚本,说明其对应的语句无法执行或者执行结果异常,确定为语法错误;如果识别不出待校验执行脚本的类别是建表语句或者变表语句,确定为类别错误。153.以上述图4实施例为例,如果通过格式兼容转换依旧无法解析待校验执行脚本,说明其对应的语句无法执行或者执行结果异常,确定为语法错误;如果是识别不出待校验执行脚本的类别是修改语句、关联插入语句或者删除语句,确定为类别错误。154.上述确定无法正确解析的原因的方式只是示例性说明,本技术并不以此为限。155.上述方案,通过将包含生成的所有校验脚本的信息发送给预设人员,以使预设人员执行收到的校验脚本,在校验环境中对待校验执行脚本进行校验;通过将无法正确解析的待校验执行脚本发送给预设人员,以使预设人员对这些待校验执行脚本进行修改。156.基于相同的发明构思,本技术实施例提供一种脚本处理装置,参阅图6所示,脚本处理装置600包括:157.脚本类别确定模块601,用于针对任一待校验执行脚本,在对所述待校验执行脚本进行解析后,确定所述待校验执行脚本的类别;158.校验脚本生成模块602,用于基于所述待校验执行脚本的类别,通过对应的目标生成方式生成所述待校验执行脚本的校验脚本;其中,所述校验脚本用于对对应的待校验执行脚本进行校验;159.若待校验执行脚本为数据变更脚本,且数据变更脚本的类别包括修改语句、关联插入语句以及删除语句;校验脚本生成模块602具体用于:160.若所述待校验执行脚本的类别为修改语句,则确定解析后所述待校验执行脚本中符合对应的过滤条件的第一字段,并生成所述第一字段的字段信息对应的校验脚本;161.若所述待校验执行脚本的类别为关联插入语句,则在确定出所有第二字段之后,确定是否有第二字段与解析后所述待校验执行脚本中的各字段匹配成功,并生成与第二字段匹配成功的字段的字段信息对应的校验脚本;其中,所述第二字段是类别为删除语句的待校验执行脚本中符合对应的过滤条件的第二字段。162.一些可选的实施方式中,校验脚本生成模块602具体用于:163.针对解析后所述待校验执行脚本中的任一字段,确定是否有第二字段与所述字段的属性值相同,若是则确定有第二字段与所述字段匹配成功。164.一些可选的实施方式中,若所述待校验执行脚本为表结构变更脚本,且表结构变更脚本的类别包括建表语句以及变表语句;校验脚本生成模块602具体用于:165.若所述待校验执行脚本的类别为建表语句,则生成解析后所述待校验执行脚本中各项目标信息对应的校验脚本;其中,所述目标信息包括表信息、字段信息以及索引信息;166.若所述待校验执行脚本的类别为变表语句,则基于解析后所述待校验执行脚本的变表子类别,生成对应的校验脚本。167.一些可选的实施方式中,所述变表子类别包括字段变化以及索引变化;校验脚本生成模块602具体用于:168.若解析后所述待校验执行脚本的变表子类别为字段变化,则生成解析后所述待校验执行脚本中各项字段信息对应的校验脚本;169.若解析后所述待校验执行脚本的变表子类别为索引变化,则生成解析后所述待校验执行脚本中各项索引信息对应的校验脚本。170.一些可选的实施方式中,若待校验执行脚本为数据变更脚本,且数据变更脚本的类别包括修改语句以及独立插入语句;校验脚本生成模块602具体用于:171.若所述待校验执行脚本的类别为修改语句,则确定解析后所述待校验执行脚本中符合对应的过滤条件的第一字段,并生成所述第一字段的字段信息对应的校验脚本;172.若所述待校验执行脚本的类别为独立插入语句,则生成解析后所述待校验执行脚本中各项字段信息对应的校验脚本。173.一些可选的实施方式中,所述过滤条件包括等于条件、包含条件以及模糊条件中的部分或全部。174.一些可选的实施方式中,还包括通知模块603,用于:175.通过预设通知方式将包含生成的所有校验脚本的信息发送给预设人员;和/或通过预设通知方式将无法正确解析的待校验执行脚本发送给预设人员。176.由于该装置即是本技术实施例中的方法中的装置,并且该装置解决问题的原理与该方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。177.基于相同的技术构思,本技术实施例还提供了一种电子设备700,如图7所示,包括至少一个处理器701,以及与至少一个处理器连接的存储器702,本技术实施例中不限定处理器701与存储器702之间的具体连接介质,图7中处理器701和存储器702之间通过总线703连接为例。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。178.其中,处理器701是电子设备的控制中心,可以利用各种接口和线路连接电子设备的各个部分,通过运行或执行存储在存储器702内的指令以及调用存储在存储器702内的数据,从而实现数据处理。可选的,处理器701可包括一个或多个处理单元,处理器701可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理下发指令。可以理解的是,上述调制解调处理器也可以不集成到处理器701中。在一些实施例中,处理器701和存储器702可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。179.处理器701可以是通用处理器,例如中央处理器(cpu)、数字信号处理器、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本技术实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合脚本处理方法实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。180.存储器702作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器702可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(randomaccessmemory,ram)、静态随机访问存储器(staticrandomaccessmemory,sram)、可编程只读存储器(programmablereadonlymemory,prom)、只读存储器(readonlymemory,rom)、带电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、磁性存储器、磁盘、光盘等等。存储器702是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本技术实施例中的存储器702还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。181.在本技术实施例中,存储器702存储有计算机程序,当该程序被处理器701执行时,使得处理器701执行:182.针对任一待校验执行脚本,在对所述待校验执行脚本进行解析后,确定所述待校验执行脚本的类别;183.基于所述待校验执行脚本的类别,通过对应的目标生成方式生成所述待校验执行脚本的校验脚本;其中,所述校验脚本用于对对应的待校验执行脚本进行校验;184.若待校验执行脚本为数据变更脚本,且数据变更脚本的类别包括修改语句、关联插入语句以及删除语句;185.处理器701具体执行:186.若所述待校验执行脚本的类别为修改语句,则确定解析后所述待校验执行脚本中符合对应的过滤条件的第一字段,并生成所述第一字段的字段信息对应的校验脚本;187.若所述待校验执行脚本的类别为关联插入语句,则在确定出所有第二字段之后,确定是否有第二字段与解析后所述待校验执行脚本中的各字段匹配成功,并生成与第二字段匹配成功的字段的字段信息对应的校验脚本;其中,所述第二字段是类别为删除语句的待校验执行脚本中符合对应的过滤条件的第二字段。188.一些可选的实施方式中,处理器701具体执行:189.针对解析后所述待校验执行脚本中的任一字段,确定是否有第二字段与所述字段的属性值相同,若是则确定有第二字段与所述字段匹配成功。190.一些可选的实施方式中,所述待校验执行脚本为表结构变更脚本,且表结构变更脚本的类别包括建表语句以及变表语句;191.处理器701具体执行:192.若所述待校验执行脚本的类别为建表语句,则生成解析后所述待校验执行脚本中各项目标信息对应的校验脚本;其中,所述目标信息包括表信息、字段信息以及索引信息;193.若所述待校验执行脚本的类别为变表语句,则基于解析后所述待校验执行脚本的变表子类别,生成对应的校验脚本。194.一些可选的实施方式中,所述变表子类别包括字段变化以及索引变化;195.处理器701具体执行:196.若解析后所述待校验执行脚本的变表子类别为字段变化,则生成解析后所述待校验执行脚本中各项字段信息对应的校验脚本;197.若解析后所述待校验执行脚本的变表子类别为索引变化,则生成解析后所述待校验执行脚本中各项索引信息对应的校验脚本。198.一些可选的实施方式中,待校验执行脚本为数据变更脚本,且数据变更脚本的类别包括修改语句以及独立插入语句;199.处理器701具体执行:200.若所述待校验执行脚本的类别为修改语句,则确定解析后所述待校验执行脚本中符合对应的过滤条件的第一字段,并生成所述第一字段的字段信息对应的校验脚本;201.若所述待校验执行脚本的类别为独立插入语句,则生成解析后所述待校验执行脚本中各项字段信息对应的校验脚本。202.一些可选的实施方式中,所述过滤条件包括等于条件、包含条件以及模糊条件中的部分或全部。203.一些可选的实施方式中,处理器701还执行:204.通过预设通知方式将包含生成的所有校验脚本的信息发送给预设人员;和/或通过预设通知方式将无法正确解析的待校验执行脚本发送给预设人员。205.由于该电子设备即是本技术实施例中的方法中的电子设备,并且该电子设备解决问题的原理与该方法相似,因此该电子设备的实施可以参见方法的实施,重复之处不再赘述。206.基于相同的技术构思,本技术实施例还提供了一种计算机可读存储介质,其存储有可由电子设备执行的计算机程序,当所述程序在所述电子设备上运行时,使得所述电子设备执行上述脚本处理方法的步骤。207.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。208.本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。209.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。210.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。211.尽管已描述了本技术的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术范围的所有变更和修改。212.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。当前第1页12当前第1页12
技术特征:
1.一种脚本处理方法,其特征在于,该方法包括:针对任一待校验执行脚本,在对所述待校验执行脚本进行解析后,确定所述待校验执行脚本的类别;基于所述待校验执行脚本的类别,通过对应的目标生成方式生成所述待校验执行脚本的校验脚本;其中,所述校验脚本用于对对应的待校验执行脚本进行校验;若待校验执行脚本为数据变更脚本,且数据变更脚本的类别包括修改语句、关联插入语句以及删除语句;基于所述待校验执行脚本的类别,通过对应的目标生成方式生成所述待校验执行脚本的校验脚本,包括:若所述待校验执行脚本的类别为修改语句,则确定解析后所述待校验执行脚本中符合对应的过滤条件的第一字段,并生成所述第一字段的字段信息对应的校验脚本;若所述待校验执行脚本的类别为关联插入语句,则在确定出所有第二字段之后,确定是否有第二字段与解析后所述待校验执行脚本中的各字段匹配成功,并生成与第二字段匹配成功的字段的字段信息对应的校验脚本;其中,所述第二字段是类别为删除语句的待校验执行脚本中符合对应的过滤条件的第二字段。2.如权利要求1所述的方法,其特征在于,确定是否有第二字段与解析后所述待校验执行脚本中的各字段匹配成功,包括:针对解析后所述待校验执行脚本中的任一字段,确定是否有第二字段与所述字段的属性值相同,若是则确定有第二字段与所述字段匹配成功。3.如权利要求1所述的方法,其特征在于,若所述待校验执行脚本为表结构变更脚本,且表结构变更脚本的类别包括建表语句以及变表语句;基于所述待校验执行脚本的类别,通过对应的目标生成方式生成所述待校验执行脚本的校验脚本,包括:若所述待校验执行脚本的类别为建表语句,则生成解析后所述待校验执行脚本中各项目标信息对应的校验脚本;其中,所述目标信息包括表信息、字段信息以及索引信息;若所述待校验执行脚本的类别为变表语句,则基于解析后所述待校验执行脚本的变表子类别,生成对应的校验脚本。4.如权利要求3所述的方法,其特征在于,所述变表子类别包括字段变化以及索引变化;基于解析后所述待校验执行脚本的变表子类别,生成对应的校验脚本,包括:若解析后所述待校验执行脚本的变表子类别为字段变化,则生成解析后所述待校验执行脚本中各项字段信息对应的校验脚本;若解析后所述待校验执行脚本的变表子类别为索引变化,则生成解析后所述待校验执行脚本中各项索引信息对应的校验脚本。5.如权利要求1所述的方法,其特征在于,若待校验执行脚本为数据变更脚本,且数据变更脚本的类别包括修改语句以及独立插入语句;基于所述待校验执行脚本的类别,通过对应的目标生成方式生成所述待校验执行脚本的校验脚本,包括:若所述待校验执行脚本的类别为修改语句,则确定解析后所述待校验执行脚本中符合对应的过滤条件的第一字段,并生成所述第一字段的字段信息对应的校验脚本;若所述待校验执行脚本的类别为独立插入语句,则生成解析后所述待校验执行脚本中各项字段信息对应的校验脚本。6.如权利要求1~5任一所述的方法,其特征在于,所述过滤条件包括等于条件、包含条
件以及模糊条件中的部分或全部。7.如权利要求1~5任一所述的方法,其特征在于,所述方法还包括:通过预设通知方式将包含生成的所有校验脚本的信息发送给预设人员;和/或通过预设通知方式将无法正确解析的待校验执行脚本发送给预设人员。8.一种脚本处理装置,其特征在于,包括:脚本类别确定模块,用于针对任一待校验执行脚本,在对所述待校验执行脚本进行解析后,确定所述待校验执行脚本的类别;校验脚本生成模块,用于基于所述待校验执行脚本的类别,通过对应的目标生成方式生成所述待校验执行脚本的校验脚本;其中,所述校验脚本用于对对应的待校验执行脚本进行校验;若待校验执行脚本为数据变更脚本,且数据变更脚本的类别包括修改语句、关联插入语句以及删除语句;校验脚本生成模块具体用于:若所述待校验执行脚本的类别为修改语句,则确定解析后所述待校验执行脚本中符合对应的过滤条件的第一字段,并生成所述第一字段的字段信息对应的校验脚本;若所述待校验执行脚本的类别为关联插入语句,则在确定出所有第二字段之后,确定是否有第二字段与解析后所述待校验执行脚本中的各字段匹配成功,并生成与第二字段匹配成功的字段的字段信息对应的校验脚本;其中,所述第二字段是类别为删除语句的待校验执行脚本中符合对应的过滤条件的第二字段。9.一种电子设备,其特征在于,包括至少一个处理器以及至少一个存储器,其中,所述存储器存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器执行如权利要求1至7任一所述的方法。10.一种计算机可读存储介质,其特征在于,其存储有可由电子设备执行的计算机程序,当所述程序在所述电子设备上运行时,使得所述电子设备执行如权利要求1至7任一所述的方法。
技术总结
本申请实施例提供了一种脚本处理方法、装置、电子设备及存储介质,该方法包括:针对任一待校验执行脚本,在对所述待校验执行脚本进行解析后,确定所述待校验执行脚本的类别;基于所述待校验执行脚本的类别,通过对应的目标生成方式生成所述待校验执行脚本的校验脚本;其中,所述校验脚本用于对对应的待校验执行脚本进行校验。上述方法,通过生成符合各待校验执行脚本校验要求的校验脚本,即使执行脚本需要重复执行,也能通过对应的校验脚本基于每次的执行结果精准地确定该执行脚本是否符合预期;另外,通过校验脚本进行校验,避免了存量数据、结构对执行脚本的影响;因此,本实施例能够精准、灵活地确定各待校验执行脚本是否符合预期。期。期。
技术研发人员:杨成 江旻 杨杨 吴磊
受保护的技术使用者:深圳前海微众银行股份有限公司
技术研发日:2021.12.07
技术公布日:2022/3/8