一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

混合型SQL脚本文件生成方法、执行方法及装置与流程

2022-02-20 13:19:49 来源:中国专利 TAG:
混合型sql脚本文件生成方法、执行方法及装置
技术领域
:1.本发明涉及互联网
技术领域
:,特别涉及金融
技术领域
:,尤其涉及一种混合型sql脚本文件生成方法及装置。
背景技术
::2.在以数据处理为中心的信息系统中,通常数据处理人员会编制多个与数据库相关的sql文件,而后由数据库系统提供的工具进行解释和执行,不同的数据库系统分别提供不同的执行器用于sql文件的执行,并且不同数据库sql文件的格式也不尽相同。比如oracle提供sqlplus来执行其pl/sql文件,hive提供了beeline来执行大数据特有的sql文件。当一个应用系统需要同时访问多个库,并且sql指令需要交叉在多个库中执行时,传统的单一sql文件将很难满足要求。此外,涉及到多个库之间需要进行数据交互,或者其中数据需要进行库外运算,传统的sql文件也无法表达,只能通过编制额外的应用程序来实现。在这些复杂场景下,传统的sql文件及其专业执行器无法满足业务运算的灵活扩展需求。技术实现要素:3.本发明的一个目的在于提供一种混合型sql脚本文件生成方法,提供可在异构数据库及库外进行运算的脚本,提高了数据处理的效率和灵活性。本发明的另一个目的在于提供一种服务器、终端、计算机设备及可读介质。4.为了达到以上目的,本发明一方面公开了一种混合型sql脚本文件生成方法,包括:5.确定待执行的多个代码段及代码执行信息;6.根据所述代码执行信息和预设标识符号形成每个代码段的说明信息;7.将所述多个代码段及对应的说明信息根据预设执行顺序依次设置形成混合型sql脚本。8.优选的,所述说明信息为注释;9.所述根据所述代码执行信息和预设标识符号形成每个代码段的说明信息具体包括:10.根据所述代码执行信息确定所述预设标识符号对应的参数值;11.根据所述预设标识符号和对应的参数值得到说明内容信息;12.根据所述说明内容信息和预设注释格式符号形成所述说明信息。13.优选的,所述说明信息为标识串;14.所述根据所述代码执行信息和预设标识符号形成每个代码段的说明信息具体包括:15.根据所述代码执行信息确定所述预设标识符号对应的参数值;16.根据所述预设标识符号和对应的参数值得到说明内容信息;17.根据所述说明内容信息和预设标识串格式符号形成所述说明信息。18.优选的,所述说明信息包括注释和标识串;19.所述根据所述代码执行信息和预设标识符号形成每个代码段的说明信息具体包括:20.根据所述代码执行信息确定所述注释和标识串的预设标识符号对应的参数值;21.根据所述预设标识符号和对应的参数值得到说明内容信息;22.根据所述说明内容信息和预设注释格式符号形成所述注释形式的说明信息,根据所述说明内容信息和预设标识串格式符号形成所述标识串形式的说明信息。23.优选的,所述代码执行信息包括代码类型,若所述代码类型为库外运算;24.所述代码段包括预设数据交换格式设置的命令类型、参数及对应的参数值。25.优选的,所述将所述多个代码段及对应的说明信息根据预设执行顺序依次设置形成混合型sql脚本具体包括:26.为每个代码段及代码段对应的说明信息设置分隔符;27.针对每个代码段,按照分隔符、说明信息和代码段的顺序形成执行单元;28.按照预设执行顺序依次排列所有执行单元得到所述混合型sql脚本。29.本发明还公开了一种如上所述的混合型sql脚本文件的执行方法,包括:30.解析所述混合型sql脚本得到多个代码段及对应的说明信息;31.确定每个代码段的说明信息对应的代码执行信息;32.按照多个代码段的执行顺序及每个代码段的代码执行信息依次执行各个代码段。33.优选的,解析所述混合型sql脚本得到多个代码段及对应的说明信息具体包括:34.识别所述混合型sql脚本中的分隔符;35.依次提取每个分隔符对应的执行单元;36.解析每个执行单元得到预计执行顺序的多个代码段及对应的说明信息。37.优选的,所述确定每个代码段的说明信息对应的代码执行信息具体包括:38.根据预设标识符号解析每个代码段的说明信息得到所述代码段的代码执行信息,所述代码执行信息包括代码类型、执行参数及对应的参数值。39.优选的,所述按照多个代码段的执行顺序及每个代码段的代码执行信息依次执行各个代码段具体包括:40.按照所述执行顺序依次获取并执行每个代码段,其中,执行代码段包括以下步骤:41.根据每个代码段的代码执行信息确定代码段的代码类型;42.若所述代码类型为库内运算,根据所述执行参数的参数值将所述代码段发送至对应的数据库进行库内运算;43.若所述代码类型为库外运算,根据预设数据交换格式对所述代码段进行解析得到命令类型、命令类型中的各参数及对应的参数值,将所述参数及对应的参数值传输至命令类型对应的库外运算单元进行库外运算。44.本发明还公开了一种混合型sql脚本文件生成装置,包括:45.信息获取模块,用于确定待执行的多个代码段及代码执行信息;46.说明信息设置模块,用于根据所述代码执行信息和预设标识符号形成每个代码段的说明信息;47.脚本生成模块,用于将所述多个代码段及对应的说明信息根据预设执行顺序依次设置形成混合型sql脚本。48.本发明还公开了一种如上所述的混合型sql脚本文件的执行装置,包括:49.脚本解析模块,用于解析所述混合型sql脚本得到多个代码段及对应的说明信息;50.说明信息解析模块,用于确定每个代码段的说明信息对应的代码执行信息;51.脚本执行模块,用于按照多个代码段的执行顺序及每个代码段的代码执行信息依次执行各个代码段。52.本发明还公开了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,53.所述处理器执行所述程序时实现如上所述方法。54.本发明还公开了一种计算机可读介质,其上存储有计算机程序,55.该程序被处理器执行时实现如上所述方法。56.本发明混合型sql脚本文件生成方法确定待执行的多个代码段及代码执行信息;根据所述代码执行信息和预设标识符号形成每个代码段的说明信息;将所述多个代码段及对应的说明信息根据预设执行顺序依次设置形成混合型sql脚本。由此,本发明生成的混合型sql脚本将多个代码段设置在一个文件中,对各个代码段设置说明信息,从而当执行该混合型sql脚本时,通过说明信息提取各个代码段,并可对各个代码段对应的说明信息进行解析,通过解析得到的各个代码段的代码执行信息进行对应的操作。由此可知,本发明的混合型sql脚本允许将多个不同数据库的库内运算的代码段和库外运算的代码段放置在一个文件中,通过说明信息的形式设置代码段的解析和执行方式,通过说明信息调用各个代码段对应的数据库执行器或库外运算单元对代码段进行处理。本发明将多个库内运算和库外运算的文件设置在一个脚本中,支持同构数据库或异构数据库的多库运算,还支持库内和库外混合运算,提高了数据处理的效率和灵活性。附图说明57.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。58.图1示出现有技术中多个sql文件和库外运算逻辑执行的示意图;59.图2示出本发明混合型sql脚本文件生成方法具体实施例的流程图;60.图3示出本发明混合型sql脚本文件生成方法具体实施例s200的流程图之一;61.图4示出本发明混合型sql脚本文件生成方法具体实施例s200的流程图之二;62.图5示出本发明混合型sql脚本文件生成方法具体实施例s200的流程图之三;63.图6示出本发明混合型sql脚本文件生成方法具体实施例s300的流程图;64.图7示出本发明混合型sql脚本文件的执行方法具体实施例的流程图;65.图8示出本发明混合型sql脚本文件的执行方法具体实施例s400的流程图;66.图9示出本发明混合型sql脚本文件生成装置具体实施例的结构图;67.图10示出本发明混合型sql脚本文件的执行装置具体实施例的结构图;68.图11示出适于用来实现本发明实施例的计算机设备的结构示意图。具体实施方式69.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。70.需要说明的是,本技术公开的一种混合型sql脚本文件生成方法及装置可用于金融
技术领域
:,也可用于除金融
技术领域
:之外的任意领域,本技术公开的一种混合型sql脚本文件生成方法及装置的应用领域不做限定。71.在本发明的一个或多个实施例中,sql文件是指使用数据库结构化查询语言(structuredquerylanguage,简称sql)文法而编制的文本文件,这种文件通常的后缀为.sql。72.在本发明的一个或多个实施例中,库外运算是指在以数据库为运算中心的系统中,不在数据库系统中运行,而是在数据库以外的主机中运行的部分业务逻辑,但这部分的逻辑通常和数据库的运算相关,这部分不在数据库中的运算简称库外运算。73.在本发明的一个或多个实施例中,sql文件执行器是数据库生产厂商提供的可以直接执行单个sql文件的工具,这种工具所执行的sql文件通常只能适用于某个特定的数据库系统。74.在本发明的一个或多个实施例中,同构数据库是指在一个应用系统中存在多个数据库系统,且每个数据库系统具有相同的类型,比如同为oracle或同为mysql。75.在本发明的一个或多个实施例中,异构数据库是指在一个应用系统中存在多个数据库系统,且各个数据库系统的类型存在不同的情况,比如一个应用系统由hive大数据平台和oracle数据库组成。76.在本发明的一个或多个实施例中,混合型sql脚本文件是指由多个数据库系统库内运算和/或库外运算逻辑表示的代码段组成的脚本文件,这种脚本文件在单一文件中包含了多个数据系统的sql代码段和一些库外运算逻辑,在执行时将按顺序在多个数据库系统和库外主机中穿插执行,进而达到整体完成某一运算任务的目的。其中多个数据库系统可以是异构数据库系统,也可以是多个同构数据库系统。77.在本发明的一个或多个实施例中,混合型sql脚本文件执行器是指本发明脚本文件的执行模块,可对混合型sql脚本文件进行解析并依次执行脚本中的各个代码段。78.现有技术中,当数据处理包括需要在多个数据库执行的sql文件和/或在数据库外运算的逻辑文件,其中每个sql文件需要采用对应的sql执行器来执行,则异构数据库的sql文件需要不同的sql执行器执行,而库外运算逻辑文件需要对应的库外运算程序来执行。由此,如图1所示,对于包括多个sql文件和逻辑文件的数据处理文件,通常需要专用的作业调度器按照预定顺序执行各个sql文件和调用库外运算程序执行逻辑文件以执行完整的数据处理作业,即作业调度器按照预定顺序通过各数据库(db1、db2)的sql执行器或调用库外运算单元对1.sql、2.sql、逻辑文件1、3.sql及逻辑文件2等文件进行依次处理。其中,通常在执行sql文件时使用的是不同数据库对应的命令行执行工具,如oracle提供sqlplus,mysql提供mysql,hive提供beeline等。79.其中,需要说明的是,sql文件,例如图1示出的1.sql,2.sql等,包含一连串的sql指令,包括ddl指令和dml指令,不同的指令之间使用分号(;)或其他数据库专用的分割符分割,在执行时,各个sql指令按序执行。一个sql文件通常由一个数据库系统执行,它的指令通常也只支持一种类型的数据库系统,如采用pl/sql的语法的sql文件只能在oracle或兼容oracle的数据库系统中运行。80.库外运算单元包括用于完成特定任务的库外运算程序,比如文件解析处理和入库、异库间数据传输等,库外运算单元不能使用sql文件实现,而需要使用专用的程序语言实现,比如使用java、python等语句实现。81.由此,现有技术中脚本执行的场景可能包括以下几种:(1)某应用系统中存在多个同构数据库且需要在多个数据库中穿插进行数据运算的场景,即需要多个sql执行器执行脚本;(2)某应用系统中存在1个或多个同构数据库,且需要库内运算和库外运算相结合的场景,即需要一个或多个sql执行器和库外运算单元执行脚本;(3)某应用系统中存在多个异构数据库且需要在多个数据库中穿插进行数据运算的场景,即需要多个不同数据库的sql执行器执行脚本;(4)某应用系统中存在多个异构数据库,且需要库内运算和库外运算相结合的场景,即需要多个不同数据库的sql执行器和库外运算单元执行脚本。82.综上可知,在多数据库sql文件和库外运算混合运算的场景下,现有技术方案的主要缺点为:(1)由于sql文件只能专用,多个sql文件的混合运算不灵活:多个数据库系统的运算顺序只能按照sql文件为单位,这样对于需要前后依赖关系比较多的应用只能设置数量更多的sql文件,而每个文件中包含的库内运算会变得很小,这样会增加调度的复杂性,sql文件的管理也不灵活。(2)库外运算单元与库内sql文件执行单元无法有效融合:由于库外运算单元与sql文件的库内运算完全独立,不能实现二者的有效融合,需要专用的作业调度器对运算过程进行控制。83.根据本发明的一个方面,本实施例公开了一种混合型sql脚本文件生成方法。84.如图2所示,本实施例中,所述方法包括:85.s100:确定待执行的多个代码段及代码执行信息。86.s200:根据所述代码执行信息和预设标识符号形成每个代码段的说明信息。87.s300:将所述多个代码段及对应的说明信息根据预设执行顺序依次设置形成混合型sql脚本。88.本发明混合型sql脚本文件生成方法确定待执行的多个代码段及代码执行信息;根据所述代码执行信息和预设标识符号形成每个代码段的说明信息;将所述多个代码段及对应的说明信息根据预设执行顺序依次设置形成混合型sql脚本。由此,本发明生成的混合型sql脚本将多个代码段设置在一个文件中,对各个代码段设置说明信息,从而当执行该混合型sql脚本时,通过说明信息提取各个代码段,并可对各个代码段对应的说明信息进行解析,通过解析得到的各个代码段的代码执行信息进行对应的操作。由此可知,本发明的混合型sql脚本允许将多个不同数据库的库内运算的代码段和库外运算的代码段放置在一个文件中,通过说明信息的形式设置代码段的解析和执行方式,通过说明信息调用各个代码段对应的数据库执行器或库外运算单元对代码段进行处理。本发明将多个库内运算和库外运算的文件设置在一个脚本中,支持同构数据库或异构数据库的多库运算,还支持库内和库外混合运算,提高了数据处理的效率和灵活性。89.在优选的实施方式中,如图3所示,所述说明信息为注释。所述s200根据所述代码执行信息和预设标识符号形成每个代码段的说明信息具体包括:90.s211:根据所述代码执行信息确定所述预设标识符号对应的参数值。91.s212:根据所述预设标识符号和对应的参数值得到说明内容信息。92.s213:根据所述说明内容信息和预设注释格式符号形成所述说明信息。93.具体的,可以理解的是,数据处理人员需要预先编制待执行的代码段,并配置代码段的代码执行信息。其中,代码执行信息可包括代码类型(库内运算或库外运算)以及不同代码类型对应的执行参数及对应的参数值。94.在本发明的一个或多个实施例中,对于库内运算的代码段,代码段包括至少一个sql语句,该sql语句的代码段的代码类型为sql,执行参数可包括代码编号、代码名称、执行方式(分别执行或整体执行)、执行语句类型(sql语句执行或存储过程语句执行)、数据库名称以及数据库类型等参数的至少之一。执行混合型sql脚本的执行器可以通过这些执行参数确定运行代码段的库外运算单元的编号、名称以及是否需要分隔运行等,同时还可确定代码在哪个数据库中执行以及执行条件等信息。95.在本发明的一个或多个实施例中,对于库外运算的代码段,数据处理人员可根据预设数据交换格式设置库外运算的命令类型以及命令类型中各参数的参数值。例如,若采用json作为预设数据交换格式,该库外运算的代码段的代码类型为json。则数据处理人员需要根据json语句的格式要求将库外运算的命令类型及命令类型中的各参数与对应的参数值设置成json语句形成库外运算的代码段。从而在执行时,可根据代码类型对代码段进行解析得到参数值,并将解析得到的参数值传输至库外运算单元进行处理,实现调用库外运算单元进行相应的库外运算的目的。类似的,库外运算的代码段的执行参数可包括代码编号及代码名称等参数的至少之一。96.此外,库外运算的执行参数还可与库内运算的执行参数相同设置,即库外运算的执行参数也包括代码编号、代码名称、执行方式(分别执行或整体执行)、执行语句类型(sql语句执行或存储过程语句执行)、数据库名称以及数据库类型等参数的至少之一。其中,对于代码类型为库外运算的代码段,在执行时没有用到的执行参数可以不设置或预先设置成默认参数,保证sql文件的整体一致性,提高混合型脚本的生成效率。97.在该优选的实施方式中,说明信息可采用注释的形式,即说明信息作为代码段的伪注释,设置在对应的代码段的头部。可以理解的是,现有技术中,sql文件一般设定了注释的表示方法,在sql文件执行时,注释的部分不作为sql语句执行,通常作为代码的说明解释提供给编程人员或者使用人员。由此,将各代码段的代码执行信息设置成注释的形式,在不影响代码段的运行的同时向执行器提供必要的代码执行信息,实现多个代码段可以设置在一个sql文件中的目的。98.在一个具体例子中,预设标识符号包括no(代码编号)、name(代码名称)、sep(执行方式)、call(执行语句类型)、ds(数据库名称)、format(代码类型)及filter(数据库类型)。根据所述代码执行信息确定no、name、sep、call、ds、format及filter对应的参数值分别为4、写入命中模型结果表、yes、no、ap、sql和oracle。则根据所述预设标识符号和对应的参数值得到说明内容信息:99.no:4name:写入命中模型结果表sep:yescall:no100.ds:apformat:sql,filter:oracle101.sql文件一般以“‑‑”作为行注释的表示方法,由此,可根据上述说明内容信息和预设注释格式符号“‑‑”形成所述说明信息,具体如下:102.‑‑no:4name:写入命中模型结果表sep:yescall:no103.‑‑ds:apformat:sqlfilter:oracle104.其中,no代表这个代码段的运算顺序为4;name:代表这个代码段的名称;sep:取值为yes或no,表示这个模块中如果包含多个sql语句,yes表示分别执行,no表示整体执行;call:取值yes或no,yes表示这个模块使用普通的sql语句执行,no表示这个模块使用存储过程的语句执行。ds:表示执行的数据库的名称,作为可区分不同数据库的标识符,该标识符可用于获取对应的数据库的连接信息(如url、用户名、密码等),数据库的连接信息可预先配置在执行混合型sql脚本的执行器中。format:取值sql或json,标识代码段的代码类型为sql或是json格式,sql由数据库完成库内运算,json由执行器解释完成库外运算。filter:可以取值为数据库类型或all,用以兼容多数据库的条件选项,只有当前数据库的类型为filter所匹配的数据库类型才运行下面的代码段,否则直接跳过不执行,all对应的是所有的数据库系统均可适应下面的代码段。105.在该优选的实施方式中,在混合型sql脚本只需在一个数据库内执行时,将说明信息设置为注释格式,单一数据库执行时无需执行器解析文件,可直接将该混合型sql脚本发送至数据库进行执行,设置在注释中的说明信息不会对数据库的执行产生影响,从而提高混合型sql脚本执行的灵活性,提高数据处理效率。106.在优选的实施方式中,如图4所示,所述说明信息为标识串。所述s200根据所述代码执行信息和预设标识符号形成每个代码段的说明信息具体包括:107.s221:根据所述代码执行信息确定所述预设标识符号对应的参数值。108.s222:根据所述预设标识符号和对应的参数值得到说明内容信息。109.s223:根据所述说明内容信息和预设标识串格式符号形成所述说明信息。110.具体的,可以理解的是,说明信息还可以以标识串的形式设置在混合型sql脚本中对应代码段的头部。则对于上述具体例子,预设标识符号包括no(代码编号)、name(代码名称)、sep(执行方式)、call(执行语句类型)、ds(数据库名称)、format(代码类型)及filter(数据库类型)。根据所述代码执行信息确定no、name、sep、call、ds、format及filter对应的参数值分别为4、写入命中模型结果表、yes、no、ap、sql和oracle。则根据所述预设标识符号和对应的参数值得到说明内容信息:111.no:4name:写入命中模型结果表sep:yescall:no112.ds:apformat:sqlfilter:oracle113.标识串的预设标识串格式符号可采用“[]”,当然,在其他实施方式中,也可采用其他符号。由此,可根据上述说明内容信息和预设注释格式符号“[]”形成所述说明信息,具体如下:[0114][no=4,name=写入命中模型结果表,sep=yes,call=no][0115][ds=ap,format=sql,filter=oracle]。[0116]在该优选的实施方式中,执行器在获取到说明信息后,可根据说明信息的形式方法对说明信息进行解析,得到说明内容信息,并根据说明内容信息的形式方式从说明内容信息中解析得到执行参数。进一步的,根据解析得到的执行参数对代码段进行库内运算或库外运算的执行操作。[0117]在优选的实施方式中,如图5所示,所述说明信息包括注释和标识串。所述s200根据所述代码执行信息和预设标识符号形成每个代码段的说明信息具体包括:[0118]s231:根据所述代码执行信息确定所述注释和标识串的预设标识符号对应的参数值。[0119]s232:根据所述预设标识符号和对应的参数值得到说明内容信息。[0120]s233:根据所述说明内容信息和预设注释格式符号形成所述注释形式的说明信息,根据所述说明内容信息和预设标识串格式符号形成所述标识串形式的说明信息。[0121]具体的,可以理解的是,说明信息还可采用注释和标识串混合的形式表示。例如,对于上述具体例子,可将no、name、sep和call的说明内容信息设置为注释形式,将ds、format的filter的说明内容信息设置为标识串形式,从而得到的说明信息为:[0122]‑‑no:4name:写入命中模型结果表sep:yescall:no[0123][ds=ap,format=sql,filter=oracle]。[0124]在优选的实施方式中,所述代码执行信息包括代码类型,若所述代码类型为库外运算。所述代码段包括预设数据交换格式设置的命令类型、参数及对应的参数值。[0125]具体的,可以理解的是,对于需要调用库外运算单元执行的库外运算逻辑代码,需要将库外运算的相关参数及参数值传输至库外运算单元。为了将库外运算逻辑代码与库内运算均设置在一个脚本文件中,本发明设置预设数据交换格式,数据处理人员根据该预设数据交换格式将库外运算的相关参数及参数值根据该预设数据交换格式进行设置形成代码段。从而在执行时,可根据代码类型对代码段进行解析得到参数值,并将解析得到的参数值传输至库外运算单元进行处理,实现调用库外运算单元进行相应的库外运算的目的。[0126]由此,对于库外运算的代码段,数据处理人员根据预设数据交换格式设置库外运算的命令类型以及命令类型中各参数的参数值。例如,若采用json作为预设数据交换格式,该库外运算的代码段的代码类型为json。则数据处理人员需要根据json语句的格式要求将库外运算的命令类型及命令类型中的各参数与对应的参数值设置成json语句形成库外运算的代码段。当然,在实际应用中,预设数据交换格式也可采用xml、k-value或ini等格式,本发明对此并不作限定。[0127]在一个具体例子中,由于无法采用sql语句表示库外运算逻辑,需要通过json在脚本文件中标识不同的库外运算逻辑。在该具体例子中,json形式的说明信息和代码段分别为:[0128]‑‑no:8name:同步结果表到tp库sep:yescall:no[0129][ds=,format=json,filter=all][0130][0131]其中,cmd:为命令类型,标识不同类型的命令,该例子中,命令为dbtransfer,表示实现跨库的数据转移。from、to和tablename分别表示命令的参数,不同的命令可对应不同的参数,在该例子中,from、to和tablename分别对应的参数值为“ap”、“tp”以及“["bd_sus_hit_model","bd_sus_hit_model_t"]”。由此,通过设置不同的命令使执行器形成库外运算的可扩展接口,并可通过不断扩充实现不同功能的命令及库外运算单元,提升执行器的库外逻辑运算能力。[0132]在优选的实施方式中,如图6所示,所述s300将所述多个代码段及对应的说明信息根据预设执行顺序依次设置形成混合型sql脚本具体包括:[0133]s310:为每个代码段及代码段对应的说明信息设置分隔符。[0134]s320:针对每个代码段,按照分隔符、说明信息和代码段的顺序形成执行单元。[0135]s330:按照预设执行顺序依次排列所有执行单元得到所述混合型sql脚本。[0136]具体的,可以理解的是,当多个库内运算和库外运算的代码段设置在同一个混合sql脚本中时,执行器在解析执行时需要将多个代码段分别提取出来单独执行。由此,为了便于执行器解析得到各个独立的代码段,可预设一个分隔符,将当前代码段与前后的代码段进行区分。具体的,在该优选的实施方式中,在不同的代码段的头部依次设置分隔符和说明信息形成一个独立的执行单元,将多个执行单元按照执行顺序依次排列即可形成混合sql脚本。例如,在一个具体例子中,为了不破坏整体以sql文件为主的文件格式特性,分隔符可采用以下的注释形式:[0137]‑‑###[brains]###[0138]当然,在其他实施方式中,也可采用其他形式的分隔符,本发明对此并不作限定。[0139]采用上述分隔符形成的混合sql脚本例如可为:[0140]‑‑###[brains]###[0141]‑‑no:1name:检查并创建临时表sep:yescall:no[0142][ds=ap,format=sql,filter=oracle][0143]createtablebd_sus_hit_model_tmp_001asselect*frombd_sus_hit_modelwhere1=0nologging;[0144]‑‑###[brains]###[0145]‑‑no:2name:写入命中模型临时表sep:yescall:no[0146][ds=tp,format=sql,filter=hive][0147]insertintobd_sus_hit_model_tmp_001[0148]select*fromtmp_hive_tab;[0149]deletefromtmp_hive_tabwheredata_date=${batch_date};[0150]‑‑###[brains]###[0151]‑‑no:3name:写入命中模型结果表sep:yescall:no[0152][ds=ap,format=sql,filter=oracle][0153]insertintobd_sus_hit_model[0154](data_date,batch_id,model_oid,obj_type,cst_type,cst_no,hit_score,hit_count,[0155]hit_rule_str,cfg_model_score,cfg_least_hit_cnt,cfg_score_count_logic,update_time)[0156]select*frombd_sus_tmp;[0157]‑‑###[brains]###[0158]‑‑no:4name:同步结果表到tp库sep:yescall:no[0159][ds=,format=json,filter=all][0160][0161]本发明提供了一种混合型sql脚本。该混合型sql脚本可以支持多个同构或异构数据库系统的多段sql语句,同时支持在该脚本中加入库外运算单元的表示代码,可在单个文件中支持多数据库sql运算和库外运算单元的运算逻辑。具体的,(1)从多sql文件转变为单一sql脚本,增强了多库运算的灵活性:数据库执行的单位由单独的sql文件变为一个一个的代码块,每个代码块可在单个数据库系统上执行,各个代码的执行顺序直接写在脚本文件中,无需在执行器中控制,大幅增强了多库运算的灵活性。(2)简化了库外和库内混合运算的复杂性:库外运算使用统一的json文本嵌入脚本中,可实现与库内sql的无缝衔接,库内和库外逻辑还可以轻松通过上下文关系及共享库实现基于数据的一体化运算.(3)简化了异构型数据库跨库运算的复杂性:通过在脚本文件中配置指定不同的数据库类型,可以支持关系型数据库、大数据平台、nosql等不同类型数据库的混合操作。总之,本发明能有效克服现有技术中存在的不足,提供了一种简单适用、灵活多样、具有扩展能力的多数据库sql和库外运算统一表示和执行的方法。[0162]基于相同原理,本发明还公开了一种如本实施例所述的混合型sql脚本文件的执行方法。如图7所示,本实施例中,所述方法包括:[0163]s400:解析所述混合型sql脚本得到多个代码段及对应的说明信息。[0164]s500:确定每个代码段的说明信息对应的代码执行信息。[0165]s600:按照多个代码段的执行顺序及每个代码段的代码执行信息依次执行各个代码段。[0166]在优选的实施方式中,如图8所示,s400解析所述混合型sql脚本得到多个代码段及对应的说明信息具体包括:[0167]s410:识别所述混合型sql脚本中的分隔符。[0168]s420:依次提取每个分隔符对应的执行单元。[0169]s430:解析每个执行单元得到预计执行顺序的多个代码段及对应的说明信息。[0170]在优选的实施方式中,所述s500确定每个代码段的说明信息对应的代码执行信息具体包括:[0171]根据预设标识符号解析每个代码段的说明信息得到所述代码段的代码执行信息,所述代码执行信息包括代码类型、执行参数及对应的参数值。[0172]在优选的实施方式中,所述s600按照多个代码段的执行顺序及每个代码段的代码执行信息依次执行各个代码段具体包括:[0173]按照所述执行顺序依次获取并执行每个代码段,其中,执行代码段包括以下步骤:[0174]根据每个代码段的代码执行信息确定代码段的代码类型;[0175]若所述代码类型为库内运算,根据所述执行参数的参数值将所述代码段发送至对应的数据库进行库内运算;[0176]若所述代码类型为库外运算,根据预设数据交换格式对所述代码段进行解析得到命令类型、命令类型中的各参数及对应的参数值,将所述参数及对应的参数值传输至命令类型对应的库外运算单元进行库外运算。[0177]基于相同原理,本发明还公开了一种混合型sql脚本文件生成装置。如图9所示,本实施例中,所述装置包括信息获取模块11、说明信息设置模块12和脚本生成模块13。[0178]其中,信息获取模块11用于确定待执行的多个代码段及代码执行信息。[0179]说明信息设置模块12用于根据所述代码执行信息和预设标识符号形成每个代码段的说明信息。[0180]脚本生成模块13用于将所述多个代码段及对应的说明信息根据预设执行顺序依次设置形成混合型sql脚本。[0181]由于该装置解决问题的原理与以上方法类似,因此本装置的实施可以参见方法的实施,在此不再赘述。[0182]基于相同原理,本发明还公开了一种如本实施例所述的混合型sql脚本文件的执行装置。如图10所示,本实施例中,所述装置包括脚本解析模块21、说明信息解析模块22和脚本执行模块23。[0183]其中,脚本解析模块11用于解析所述混合型sql脚本得到多个代码段及对应的说明信息。[0184]说明信息解析模块12用于确定每个代码段的说明信息对应的代码执行信息。[0185]脚本执行模块13用于按照多个代码段的执行顺序及每个代码段的代码执行信息依次执行各个代码段。[0186]由于该装置解决问题的原理与以上方法类似,因此本装置的实施可以参见方法的实施,在此不再赘述。[0187]上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机设备,具体的,计算机设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。[0188]在一个典型的实例中计算机设备具体包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述的由客户端执行的方法,或者,所述处理器执行所述程序时实现如上所述的由服务器执行的方法。[0189]下面参考图11,其示出了适于用来实现本技术实施例的计算机设备600的结构示意图。[0190]如图11所示,计算机设备600包括中央处理单元(cpu)601,其可以根据存储在只读存储器(rom)602中的程序或者从存储部分608加载到随机访问存储器(ram))603中的程序而执行各种适当的工作和处理。在ram603中,还存储有系统600操作所需的各种程序和数据。cpu601、rom602、以及ram603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。[0191]以下部件连接至i/o接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(crt)、液晶反馈器(lcd)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如lan卡,调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至i/o接口606。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装如存储部分608。[0192]特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包括用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。[0193]计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。[0194]为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本技术时可以把各单元的功能在同一个或多个软件和/或硬件中实现。[0195]本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。[0196]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。[0197]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。[0198]还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。[0199]本领域技术人员应明白,本技术的实施例可提供为方法、系统或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。[0200]本技术可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本技术,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。[0201]本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。[0202]以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献