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

SQL处理方法、SQL处理系统与流程

2022-04-02 03:52:33 来源:中国专利 TAG:
sql处理方法、sql处理系统
技术领域
:1.本发明涉及大数据技术数据处理
技术领域
:,具体涉及一种sql(structuredquerylanguage,结构化查询语言)处理方法、一种sql处理系统。
背景技术
::2.目前主流的sql解析工具主要为calcite(一种动态数据管理框架)和正则表达式。3.calcite方式解析出的语法树需要自定义方法去遍历整棵树,不够方便,且无法完成在一次遍历语法树中修改sql中的部分属性。正则表达式的方式则无法精准的根据sql的上下文语意解析出所需的参数,且实现方式和后续维护较为困难。技术实现要素:4.为解决上述技术问题,本发明的第一个目的在于提出一种sql处理方法。5.本发明的第二个目的在于提出一种sql处理系统。6.本发明采用的技术方案如下:7.本发明第一方面的实施例提出了一种sql处理方法,包括以下步骤:基于druid(一种专为大型数据集上的高性能切片和联机分析处理而设计的数据存储)组件解析sql输入参数的数据类型;根据传参修改所述输入参数为预编译格式并保留有顺序的传参列表,将变更后的druid组件的语法表达式转换为sql;通过预编译模式执行sql。8.本发明上述提出的sql处理方法还可以具有如下附加技术特征:9.根据本发明的一个实施例,基于druid组件解析sql输入参数,具体包括:继承druid组件中的sqlastvisitoradapter实现tablesvisitor类,遍历并获取sqlfrom表达式中的表信息;通过jdbc(javadatabaseconnectivity,java数据库连接)查询表的字段信息;通过whereitemsvisitor类,遍历sqlwhere语法中的表达式,获取符合输入参数格式的为所述输入参数;通过输入参数对应的字段判断所述输入参数的数据类型。10.根据本发明的一个实施例,根据传参修改所述输入参数为预编译格式并保留有顺序的传参列表,并将druid组件的语法表达式转换为sql,包括:遍历where过滤条件表达式;判断所述表达式是否符合输入参数格式,如果所述输入参数在所述传参中存在则替换为预编译格式,并将所述传参按顺序记录下来;实现wherespaceholdervisitor类,遍历where过滤条件表达式,获取仍持有输入参数的过滤条件;通过正则表达式将所述持有输入参数的过滤条件替换为空字符串;清理where关键字后过滤条件为空的where语句;将变更后的druid的语法表达式转换为sql。11.根据本发明的一个实施例,通过预编译模式执行sql,包括:根据所述sql输入参数的数据类型转换所述传参为java(面向对象编程语言)数据类型;根据预编译模式sql,通过jdbc辅以java数据类型的传参执行得到最终结果。12.本发明第二方面的实施例提出了一种sql处理系统,包括:解析模块,所述解析模块用于基于druid组件解析sql输入参数的数据类型;转换模块,所述转换模块用于根据传参修改所述输入参数为预编译格式并保留有顺序的传参列表,将变更后的druid组件的语法表达式转为sql;执行模块,所述执行模块用于通过预编译模式执行sql。13.本发明上述提出的sql处理系统还可以具有如下附加技术特征:14.根据本发明的一个实施例,所述解析模块具体用于:继承druid组件中的sqlastvisitoradapter实现tablesvisitor类,遍历并获取sqlfrom表达式中的表信息;通过jdbc查询表的字段信息;通过whereitemsvisitor类,遍历sqlwhere语法中的表达式,获取符合输入参数格式的为所述输入参数;通过输入参数对应的字段判断所述输入参数的数据类型。15.根据本发明的一个实施例,所述转换模块具体用于:遍历where过滤条件表达式;判断所述表达式是否符合输入参数格式,如果所述输入参数在所述传参中存在则替换为预编译格式,并将所述传参按顺序记录下来;实现wherespaceholdervisitor类,遍历where过滤条件表达式,获取仍持有输入参数的过滤条件;通过正则表达式将所述持有输入参数的过滤条件替换为空字符串;清理where关键字后过滤条件为空的where语句;将变更后的druid的语法表达式转换为sql。16.根据本发明的一个实施例,所述执行模块具体用于:根据所述sql输入参数的数据类型转换所述传参为java数据类型;根据预编译模式sql,通过jdbc辅以java数据类型的传参执行得到最终结果。17.本发明的有益效果:18.本发明可将配置的sql解析出输入参数,方便用户动态传参,可以实现参数、过滤条件等不同条件下的sql执行,且使用druid组件来实现解析sql,在sql语法树的遍历上更加灵活,能够针对所需的sql表达式做特殊处理,实现方式更加便捷。附图说明19.图1是根据本发明一个实施例的sql处理方法的流程图;20.图2是根据本发明一个实施例的visitor类继承关系示意图;21.图3是根据本发明一个实施例的sql处理系统的方框示意图。具体实施方式22.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。23.图1是根据本发明一个实施例的sql处理方法的流程图。如图1所示,该方法包括以下步骤:24.s1,基于druid组件解析sql输入参数的数据类型。25.进一步地,根据本发明的一个实施例,基于druid组件解析sql输入参数,具体包括:继承druid组件中的sqlastvisitoradapter实现tablesvisitor类,遍历并获取sqlfrom表达式中的表信息;通过jdbc查询表的字段信息;通过whereitemsvisitor类,遍历sqlwhere语法中的表达式,获取符合输入参数格式的为输入参数;通过输入参数对应的字段判断输入参数的数据类型。26.具体地,基于druid组件解析sql输入参数的数据类型的目的是将初始sql过滤条件中参数值为输入参数格式的输入参数解析出来。27.visitor类继承关系可参照图2所示。其中,sqlastvisitoradapter是druid组件对外提供的遍历语法树的适配器,tablesvisitor、whereitemsvisitor是继承自sqlastvisitoradapter,实现的针对不同语法表达式的语法解析器。tablesvisitor是解析sql中表名称的语法解析器,whereitemsvisitor是解析sql中过滤条件的语法解析器,wherespaceholdervisitor是解析sql中过滤条件并完成替换参数的语法解析器。28.s2,根据传参修改输入参数为预编译格式并保留有顺序的传参列表,将变更后的druid组件的语法表达式转换为sql。29.进一步地,根据本发明的一个实施例,根据传参修改输入参数为预编译格式并保留有顺序的传参列表,并将druid组件的语法表达式转换为sql,包括:遍历where过滤条件表达式;判断表达式是否符合输入参数格式,如果输入参数在传参中存在则替换为预编译格式,并将传参按顺序记录下来;实现wherespaceholdervisitor类,遍历where过滤条件表达式,获取仍持有输入参数的过滤条件;通过正则表达式将持有输入参数的过滤条件替换为空字符串;清理where关键字后过滤条件为空的where语句;将变更后的druid的语法表达式转换为sql。30.也就是说,遍历sql表达式,根据传参替换输入参数为预编译格式,当传参没有覆盖到sql中全部的输入参数时,需要删除sql中未填的过滤项。31.s3,通过预编译模式执行sql。32.根据本发明的一个实施例,通过预编译模式执行sql,包括:根据sql输入参数的数据类型转换传参为java数据类型;根据预编译模式sql,通过jdbc辅以java数据类型的传参执行得到最终结果。33.具体地,根据步骤s1解析出的输入参数的数据类型,转换传参为具体的java数据类型。将经过步骤s2处理过的预编译模式sql,通过jdbc辅以java数据类型的传参执行得到最终结果。34.由上可知,本发明可将配置的sql解析出输入参数,方便用户动态传参,可以实现参数、过滤条件等不同条件下的sql执行。而且,在技术上使用druid组件来实现解析sql,在sql语法树的遍历上更加灵活,能够针对所需的sql表达式做特殊处理,相较于其他方式实现更加便捷。35.本发明可以应用到相关的数据服务套件中,用户将数据源和sql配置为api(applicationprogramminginterface,应用程序编程接口)接口,并提供接口调用服务,根据用户的传参,动态拼接sql执行获取结果。36.综上所述,根据本发明实施例的sql处理方法,基于druid组件解析sql输入参数的数据类型,根据传参修改输入参数为预编译格式并保留有顺序的传参列表,将变更后的druid组件的语法表达式转换为sql,通过预编译模式执行sql。由此,该方法可将配置的sql解析出输入参数,方便用户动态传参,可以实现参数、过滤条件等不同条件下的sql执行,且使用druid组件来实现解析sql,在sql语法树的遍历上更加灵活,能够针对所需的sql表达式做特殊处理,实现方式更加便捷。37.与上述的sql处理方法相对应,本发明还提出一种sql处理系统。由于本发明的系统实施例是与上述的方法实施例相对应,对于系统实施例中未披露的细节可参照上述的方法实施例,本发明中不再进行赘述。38.图3是根据本发明一个实施例的sql处理系统的方框示意图,如图3所示,该装置包括:解析模块1、转换模块2和执行模块3。39.其中,解析模块1用于基于druid组件解析sql输入参数的数据类型;转换模块2用于根据传参修改输入参数为预编译格式并保留有顺序的传参列表,将变更后的druid组件的语法表达式转为sql;执行模块3用于通过预编译模式执行sql。40.根据本发明的一个实施例,解析模块1具体用于:继承druid组件中的sqlastvisitoradapter实现tablesvisitor类,遍历并获取sqlfrom表达式中的表信息;通过jdbc查询表的字段信息;通过whereitemsvisitor类,遍历sqlwhere语法中的表达式,获取符合输入参数格式的为输入参数;通过输入参数对应的字段判断输入参数的数据类型。41.根据本发明的一个实施例,转换模块2具体用于:遍历where过滤条件表达式;判断表达式是否符合输入参数格式,如果输入参数在传参中存在则替换为预编译格式,并将传参按顺序记录下来;实现wherespaceholdervisitor类,遍历where过滤条件表达式,获取仍持有输入参数的过滤条件;通过正则表达式将持有输入参数的过滤条件替换为空字符串;清理where关键字后过滤条件为空的where语句;将变更后的druid的语法表达式转换为sql。42.根据本发明的一个实施例,执行模块3具体用于:根据sql输入参数的数据类型转换传参为java数据类型;根据预编译模式sql,通过jdbc辅以java数据类型的传参执行得到最终结果。43.根据本发明实施例的sql处理系统,通过解析模块基于druid组件解析sql输入参数的数据类型,转换模块根据传参修改输入参数为预编译格式并保留有顺序的传参列表,将变更后的druid组件的语法表达式转为sql,执行模块通过预编译模式执行sql。由此,可将配置的sql解析出输入参数,方便用户动态传参,可以实现参数、过滤条件等不同条件下的sql执行,且使用druid组件来实现解析sql,在sql语法树的遍历上更加灵活,能够针对所需的sql表达式做特殊处理,实现方式更加便捷。44.在本发明的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。“多个”的含义是两个或两个以上,除非另有明确具体的限定。45.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。46.流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属
技术领域
:的技术人员所理解。47.在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。48.应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。49.本
技术领域
:的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。50.此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。51.上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。52.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。当前第1页12当前第1页12
再多了解一些

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

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

相关文献