SQL文本审核方法、系统、存储介质及装置与流程

文档序号:20775250发布日期:2020-05-19 20:42阅读:118来源:国知局
本发明涉及sql文本
技术领域
:,特别是涉及一种sql文本审核方法、系统、存储介质及装置。
背景技术
::为保障生产安全,所有通过发版sql文本以及订正sql文本都需要dba(数据库管理员(databaseadministrator,简称dba),是从事管理和维护数据库管理系统(dbms)的相关工作人员的统称,他属于运维工程师的一个分支,主要负责业务数据库从设计、测试到部署交付的全生命周期管理。)进行审核。随着公司日益扩大的数据库数量,伴随而来的是庞大的数据订正与版本发布。这就对dba的审核带来了巨大的挑战。因此,希望能够解决如何快速、自动审核sql文本,减少人力成本的问题。技术实现要素:鉴于以上所述现有技术的缺点,本发明的目的在于提供一种sql文本审核方法、系统、存储介质及装置,用于解决现有技术中如何快速、自动审核sql文本,减少人力成本的问题。为实现上述目的及其他相关目的,本发明提供一种sql文本审核方法,包括以下步骤:获取sql文本,并识别所述文本类型为ddl语句还是dml语句;对为ddl语句的sql文本进行ddl审核得到审核结果;或对为dml语句的sql文本进行dml审核得到审核结果;执行审核结果为通过的sql文本。于本发明的一实施例中,所述对为ddl语句的sql文本进行ddl审核包括以下步骤:以条为单位拆分所述为ddl语句的sql文本;基于正则表达式获取每条sql文本的关键词;基于所述关键词获取所述关键词的对应信息;基于预设的审核规则对所述每条sql文本及其关键词的对应信息进行审核。于本发明的一实施例中,所述对为dml语句的sql文本进行dml审核包括以下步骤:以条为单位拆分所述为dml语句的sql文本;获取每条sql文本的执行计划信息;基于预设的审核规则对所述每条sql文本及执行计划信息进行审核。于本发明的一实施例中,还包括以下步骤:获取所述sql文本对应的工单的状态信息;将所述sql文本的审核结果写入所述工单;获取所述sql文本对应的工单的流转结果。为实现上述目的,本发明还提供一种sql文本审核系统,包括:获取模块、审核模块和执行模块;所述获取模块用于获取sql文本,并识别所述文本类型为ddl语句还是dml语句;所述审核模块用于对为ddl语句的sql文本进行ddl审核得到审核结果;或对为dml语句的sql文本进行dml审核得到审核结果;所述执行模块用于执行审核结果为通过的sql文本。于本发明的一实施例中,所述审核模块用于对为ddl语句的sql文本进行ddl审核得到审核结果包括:以条为单位拆分所述为ddl语句的sql文本;基于正则表达式获取每条sql文本的关键词;基于所述关键词获取所述关键词的对应信息;基于预设的审核规则对所述每条sql文本及其关键词的对应信息进行审核。于本发明的一实施例中,所述审核模块用于对为dml语句的sql文本进行dml审核得到审核结果包括:以条为单位拆分所述为dml语句的sql文本;获取每条sql文本的执行计划信息;基于预设的审核规则对所述每条sql文本及执行计划信息进行审核。于本发明的一实施例中,还包括工单模块用于:获取所述sql文本对应的工单的状态信息;将所述sql文本的审核结果写入所述工单;获取所述sql文本对应的工单的流转结果。为实现上述目的,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一上述sql文本审核方法。为实现上述目的,本发明还提供一种sql文本审核装置,包括:处理器和存储器;所述存储器用于存储计算机程序;所述处理器与所述存储器相连,用于执行所述存储器存储的计算机程序,以使所述sql文本审核装置执行任一上述的sql文本审核方法。如上所述,本发明的一种sql文本审核方法、系统、存储介质及装置,具有以下有益效果:用于进行sql文本自动化审核,减少重复的人工审核劳动。附图说明图1显示为本发明的sql文本审核方法于一实施例中的流程图;图2显示为本发明的sql文本审核系统于一实施例中的结构示意图;图3显示为本发明的通信信号接收装置于一实施例中的结构示意图。元件标号说明21获取模块22审核模块23执行模块31处理器32存储器具体实施方式以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。本发明的sql文本审核方法、系统、存储介质及装置,用于进行sql文本自动化审核,减少重复的人工审核劳动。如图1所示,于一实施例中,本发明的sql文本审核方法,包括以下步骤:步骤s11、获取sql文本,并识别所述文本类型为ddl语句还是dml语句。于本发明一实施例中,所述sql文本是指由sql语言所组成的文本,sql是结构化查询语言(structuredquerylanguage)的简称。sql语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。sql语言共分为四大类:数据查询语言dql,数据操纵语言dml,数据定义语言ddl,数据控制语言dcl。ddl(datadefinitionlanguage,数据定义语言))是数据定义语言,是用于描述数据中要存储的现实世界实体的语言,常见的ddl语句例如:创建数据库:createdatabase创建表:createtable)。所述ddl语句就是由数据定义语言组成的语句或者说是由数据定义语言组成的脚本。dml((datamanipulationlanguage,数据操纵语言))是数据操纵语言,dml是伴随tcl事务控制的。dml操作是指对数据库中表记录的操作,主要包括表记录的插入(insert)、更新(update)、删除(delete)和查询(select),是开发人员日常使用最频繁的操作。dml语句就是由数据操纵语言组成的语句或者说是由数据操纵语言组成的脚本。步骤s12、对为ddl语句的sql文本进行ddl审核得到审核结果;或对为dml语句的sql文本进行dml审核得到审核结果。于本发明一实施例中,所述对为ddl语句的sql文本进行ddl审核得到审核结果包括以下步骤:以条为单位拆分所述为ddl语句的sql文本;基于正则表达式获取每条sql文本的关键词;基于所述关键词获取所述关键词的对应信息;基于预设的审核规则对所述每条sql文本及其关键词的对应信息进行审核。具体的,所述以条为单位拆分所述为ddl语句的sql文本是指将所述ddl语句拆分成一条一条的单条的ddl语句,或者说一句ddl就是一条。所述基于正则表达式获取每条sql文本的关键词是指基于基于正则表达式识别每条sql文本的关键词,正则表达式是对字符串(包括普通字符(例如,a到z之间的字母)和特殊字符(称为"元字符"))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。因此,可以通过正则表达式识别每条sql文本的关键词。所述基于所述关键词获取所述关键词的对应信息,例如基于正则表达式获取每条sql文本的关键词为表名,则需要获取所述表名对应的表的信息。或者所述基于正则表达式获取每条sql文本的关键词为索引名,则需要获取所述索引名对应的索引信息。所述基于预设的审核规则对所述每条sql文本及其关键词的对应信息进行审核,所述预设的审核规则由下表1审核规则所示,只有当所述每条sql文本及其关键词的对应信息都通过审核规则,则所述每条sql文本对应的ddl语句审核结果为通过。例如:某条sql文本是要添加已经存在的列,那么他就是不符合预设的审核规则的,对应的规则危险级别为error,则所述某条sql文本所对应的sql文本无法审核通过。也就是说如果所述某条sql文本出现审核规则的规则描述的情况则不符合预设的审核规则,则所述某条sql文本所对应的sql文本无法审核通过。对于ddl语句的ddl审核会通过正则表达式完成ddl语句的词法解析,然后通过前端配置的审核规则去匹配,完成数据库规范的校验以及ddl语句性能的校验。表1审核规则于本发明一实施例中,所述对为dml语句的sql文本进行dml审核包括以下步骤:以条为单位拆分所述为dml语句的sql文本;获取每条sql文本的执行计划信息;基于预设的审核规则对所述每条sql文本及执行计划信息进行审核。具体的,所述以条为单位拆分所述为dml语句的sql文本是指将所述dml语句拆分成一条一条的单条的dml语句,或者说一句dml就是一条。所述获取每条sql文本的执行计划信息是指在每条sql文本前加上生成执行计划关键字,例如对oracle而言是“explainplanfor”,对mysql而言是“explain”。所述oracle、mysql是指每条sql文本所对应的数据库类型。对每条sql文本加上生成执行计划关键字,才能将加上生成执行计划关键字的每条sql文本送入对应的数据库进行执行,从而生成执行计划的语句,并获取执行计划信息。如获取执行计划信息失败则说明此条sql文本有语法问题,如果有问题则跳过下一步,直接报错信息返回。如果没有问题则获取执行计划信息成功,进入下一步。所述基于预设的审核规则对所述每条sql文本及执行计划信息进行审核,所述预设的审核规则由上表1审核规则所示,只有当所述每条sql文本及其执行计划信息都通过审核规则,则每条sql文本对应的dml语句审核结果为通过。对于dml语句的dml审核会连接数据库通过在每条sql文本前加上生成执行计划关键字的方式进行sql语法判断,完成dml审核这样的审核方式。1、利用程序自动化审核sql文本,从原来的人工分钟级审核到现在程序秒级审核,审核效率提升10倍不止。2、通过50多项审核规则完成精细化审核,不仅对其语法、规范进行审核,其sql文本在执行过程中对生产的影响也可以审核出来。完成精细化审核,这在以前人工审核时代是不具备的。3、可配置审核规则使平台可以适用于不同需求的使用方,审核可扩展性和灵活性时是前人工审核无法比拟的。步骤s13、执行审核结果为通过的sql文本。sql文本审核通过后,可进行自主化执行通过的sql文本,从而避免登录相关数据库服务器手工执行的风险。于本发明一实施例中,还包括以下步骤:获取所述sql文本对应的工单的状态信息;将所述sql文本的审核结果写入所述工单;获取所述sql文本对应的工单的流转结果。具体的步骤如下,获取sql文本,并识别所述文本类型为ddl语句还是dml语句;获取所述sql文本对应的工单的状态信息;对为ddl语句的sql文本进行ddl审核得到审核结果;或对为dml语句的sql文本进行dml审核得到审核结果;将所述sql文本的审核结果写入所述工单;获取所述sql文本对应的工单的流转结果;执行审核结果为通过的sql文本。从而优化审核执行流程,从原来的单个工单从审核到执行需要花费近一个小时,到现在自主化审核修改执行,可以保证分钟级的审核执行速度。所有上述各个步骤都会同步与工单系统进行交互,在完成审核的同时完成工单流程把控。工单就是指sql文本的申请执行请求单,需要领导审批。如图2所示,于一实施例中,本发明的sql文本审核系统,包括获取模块21、审核模块22和执行模块23。所述获取模块21用于获取sql文本,并识别所述文本类型为ddl语句还是dml语句.所述审核模块22用于对为ddl语句的sql文本进行ddl审核得到审核结果;或对为dml语句的sql文本进行dml审核得到审核结果。所述审核模块22用于对为ddl语句的sql文本进行ddl审核得到审核结果包括:以条为单位拆分所述为ddl语句的sql文本;基于正则表达式获取每条sql文本的关键词;基于所述关键词获取所述关键词的对应信息;基于预设的审核规则对所述每条sql文本及其关键词的对应信息进行审核。所述审核模块22用于对为dml语句的sql文本进行dml审核得到审核结果包括:以条为单位拆分所述为dml语句的sql文本;获取每条sql文本的执行计划信息;基于预设的审核规则对所述每条sql文本及执行计划信息进行审核。所述执行模块23用于执行审核结果为通过的sql文本。还包括工单模块用于:获取所述sql文本对应的工单的状态信息;将所述sql文本的审核结果写入所述工单;获取所述sql文本对应的工单的流转结果。需要说明的是,应理解以上系统的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,x模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上x模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(applicationspecificintegratedcircuit,简称asic),或,一个或多个微处理器(digitalsingnalprocessor,简称dsp),或,一个或者多个现场可编程门阵列(fieldprogrammablegatearray,简称fpga)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(centralprocessingunit,简称cpu)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称soc)的形式实现。于本发明一实施例中,本发明还包括一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一所述sql文本审核方法。本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过计算机程序相关的硬件来完成。前述的计算机程序可以存储于一计算机可读存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。如图3所示,于一实施例中,本发明的sql文本审核装置包括:处理器31和存储器32;所述存储器32用于存储计算机程序;所述处理器31与所述存储器32相连,用于执行所述存储器32存储的计算机程序,以使所述sql文本审核装置执行任一所述的sql文本审核方法。具体地,所述存储器32包括:rom、ram、磁碟、u盘、存储卡或者光盘等各种可以存储程序代码的介质。优选地,所述处理器31可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessor,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(fieldprogrammablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。综上所述,本发明sql文本审核方法、系统、存储介质及装置,用于进行sql文本自动化审核,减少重复的人工审核劳动。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属
技术领域
:中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1