CN112783916A - Sql语句审核方法及装置、存储介质及电子设备 - Google Patents
Sql语句审核方法及装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN112783916A CN112783916A CN202110004915.XA CN202110004915A CN112783916A CN 112783916 A CN112783916 A CN 112783916A CN 202110004915 A CN202110004915 A CN 202110004915A CN 112783916 A CN112783916 A CN 112783916A
- Authority
- CN
- China
- Prior art keywords
- sql statement
- sql
- auditing
- database
- rule
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 85
- 238000012550 audit Methods 0.000 claims description 39
- 238000010586 diagram Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种SQL语句审核方法及装置、存储介质及电子设备,该方法包括:获取SQL语句集合;判断每条SQL语句的语法是否正确;若所有的SQL语句的语法均正确,则按预设的审核规则,对每条SQL语句进行审核;若所有的SQL语句均满足审核规则,则确定SQL语句集合通过审核。本申请提供的技术方案,自动对SQL语句集合中的每一条SQL语句的语法进行审核,并在所有的SQL语句的语法正确的情况下,基于审核规则对SQL语句进行审核,整个过程无需任何人工干预,从而节省了大量的时间成本和人力成本,以及极大的提升了SQL语句审核的效率。
Description
技术领域
本申请涉及数据库技术领域,尤其涉及一种SQL语句审核方法及装置、存储介质及电子设备。
背景技术
随着企业的业务量增多,相应的,企业的应用***的数据库数量也随之增加,数据库中的数据每天都需要进行查询、更新或其他操作,而通常情况下,利用结构化查询语言SQL来实现这些操作。
在利用SQL语句对数据库进行操作的过程中,如果SQL语句不规范,会导致数据库操作错误,进而导致数据库的整体性能降低。因此,需要对进入数据库执行的SQL语句进行审核。
现有技术中,由人工对SQL语句进行审核,在SQL语句数据量较大的情况下,需要消耗大量的时间成本和人力成本,效率较低。
申请内容
本申请所要解决的技术问题是提供一种SQL语句审核方法及装置、存储介质及电子设备,目的在于解决需要消耗大量的时间成本和人力成本,以及效率较低的问题。
为了实现上述目的,本申请提供了以下技术方案:
一种SQL语句审核方法,包括:
获取SQL语句集合;所述SQL语句集合中包括至少一条SQL语句;
判断每条SQL语句的语法是否正确;
若所有的SQL语句的语法均正确,则按预设的审核规则,对每条SQL语句进行审核;
若所有的SQL语句均满足所述审核规则,则确定所述SQL语句集合通过审核。
上述的方法,可选的,所述获取SQL语句集合,包括:
获取SQL文件;所述SQL文件中至少包括SQL文本和所述SQL文本对应的数据库标识;
对所述SQL文本进行SQL语句划分,得到多条SQL语句;
将所有的SQL语句组成SQL语句集合。
上述的方法,可选的,所述判断每条SQL语句的语法是否正确,包括:
针对每条SQL语句,对所述SQL语句进行抽象语法树的构建;判断所述SQL语句对应的抽象语法树是否被成功构建;若所述SQL语句对应的抽象语法树被成功构建,则确定所述SQL语句的语法正确。
上述的方法,可选的,所述按预设的审核规则,对每条SQL语句进行审核,包括:
针对每条SQL语句,遍历所述SQL语句对应的抽象语法树,获取所述抽象语法树中每个节点的节点信息,基于各个节点信息,获取所述SQL语句对应的各个数据库对象;
针对每条SQL语句,判断所述SQL语句对应的每一个数据库对象是否满足预设的审核规则,若任意一个数据库对象不满足所述审核规则,则判断出所述SQL语句不满足所述审核规则,若所述SQL语句对应的每一个数据库对象均满足所述审核规则,则确定所述SQL语句满足所述审核规则。
上述的方法,可选的,所述判断所述SQL语句对应的每一个数据库对象是否满足预设的审核规则,包括:
基于目标数据库,对所述SQL语句对应的每个数据库对象的存在性和约束性进行审核;所述目标数据库为所述SQL文件中包含的数据库标识所对应的数据库;
当所有的数据库对象均满足存在性和约束性的审核时,判断每个所述数据库对象的命名规则是否满足预设的自定义规则;
若所有的数据库对应均满足所述自定义规则,则基于所述SQL语句对应的所有数据库对象,统计所述SQL语句的性能指标值;
当所述SQL语句的性能指标值小于预设性能阈值时,确定所述SQL语句对应的每一个数据库对象满足预设的审核规则。
上述的方法,可选的,还包括:
若任意一个SQL语句的语法不正确或任意一条SQL语句不满足所述审核规则,则确定所述SQL语句集合未通过审核
上述的方法,可选的,所述判断出所述SQL语句集合通过审核之后,还包括:
生成审核报告信息,并存储所述审核报告信息;
将所述审核报告信息进行可视化展示。
一种SQL语句审核装置,包括:
获取单元,用于获取SQL语句集合;所述SQL语句集合中包括至少一条SQL语句;
判断单元,用于判断每条SQL语句的语法是否正确;
审核单元,用于若所有的SQL语句的语法均正确,则按预设的审核规则,对每条SQL语句进行审核;
确定单元,用于若所有的SQL语句均满足所述审核规则,则确定所述SQL语句集合通过审核。
一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行上述的SQL语句审核方法。
一种电子设备,包括存储器,以及一个或者一个以上的指令,其中一个或者一个以上指令存储于存储器中,且经配置以由一个或者一个以上处理器执行上述的SQL语句审核方法。
与现有技术相比,本申请包括以下优点:
本申请提供了一种SQL语句审核方法及装置、存储介质及电子设备,包括:获取SQL语句集合;判断每条SQL语句的语法是否正确;若所有的SQL语句的语法均正确,则按预设的审核规则,对每条SQL语句进行审核;若所有的SQL语句均满足审核规则,则确定SQL语句集合通过审核。本申请提供的技术方案,自动对SQL语句集合中的每一条SQL语句的语法进行审核,并在所有的SQL语句的语法正确的情况下,基于审核规则对SQL语句进行审核,整个过程无需任何人工干预,从而节省了大量的时间成本和人力成本,以及极大的提升了SQL语句审核的效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的一种SQL语句审核方法的方法流程图;
图2为本申请提供的一种SQL语句审核方法的又一方法流程图;
图3为本申请提供的一种SQL语句审核方法的再一方法流程图;
图4为本申请提供的一种SQL语句审核方法的另一方法流程图;
图5为本申请提供的一种SQL语句审核装置的结构示意图;
图6为本申请提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供了一种SQL语句审核方法,该方法可以应用在基于云平台的SQL质量审核装置,该***可以通过插件的方式适配不同的文本编辑器,该方法的方法流程图如图1所示,具体包括:
S101、获取SQL语句集合。
用户根据需求在文本编辑器上编辑SQL语句,将所编辑的SQL语句保存为SQL文本,并将SQL文本保存在SQL文件中上传至SQL质量审核装置。SQL质量审核装置接收SQL文件,并基于SQL文件,获取SQL语句集合,其中,SQL语句集合中包括至少一条SQL语句。
参阅图2,获取SQL语句集合的过程,具体包括:
S201、获取SQL文件。
获取用户上传的SQL文件,SQL文件中至少包括SQL文本和数据库标识,SQL文本中包括至少一条SQL语句,SQL语句之间通过预设分隔符分隔,数据库标识为标识数据库的信息,包括但不限于数据库的类型信息、数据库的ip地址、访问数据库的端口信息、数据库的用户名以及密码。
可选的,用户可以手动上传SQL文件,也可以通过定时触发的方式上传SQL文件。
S202、对SQL文本进行SQL语句划分,得到多条SQL语句。
按预设划分方式,对SQL文本进行SQL语句划分,具体的,识别SQL文本中包含的各个预设分隔符,基于各个预设分隔符,对SQL文本进行SQL语句划分,得到多条SQL语句。
S203、将所有的SQL语句组成SQL语句集合。
本申请实施例提供的方法中,对SQL文件中的SQL文本进行SQL语句划分,从而得到SQL文本包含的多条SQL语句,并将所有的SQL语句组成SQL语句集合。
S102、判断每条SQL语句的语法是否正确,若正确,执行步骤S103,若不正确,执行步骤S104。
基于语法解析引擎,对每条SQL语句的语法结构进行解析,得到解析结果,基于解析结果,判断每条SQL语句的语法是否正确。
需要说明的是,SQL语句集合中各条SQL语句按预设顺序排列,预设顺序与各条SQL语句后续在数据库中执行的顺序有关,若任意一条SQL语句存在语法错误,则会影响其他SQL语句在数据库中的执行,因此需要判断每一条SQL语句的语法是否正确。
参阅图3,判断每条SQL语句的语法是否正确的过程,具体包括:
S301、针对每条SQL语句,对SQL语句进行抽象语法树的构建。
针对每条SQL语句,基于语法解析引擎,对该SQL语句进行抽象语法树的构建,具体的,语法解析引擎对该SQL语句的语法结构进行解析,得到解析结果,获取预设的与该SQL语句的语句类型对应的标准语法结构,将解析结果与标准语法结构进行比对,若解析结果与标准语法结构比对一致,则基于解析结果,构建该SQL语句对应的抽象语法树;若解析结果与标准语法结构比对不一致,则输出抽象语法树构建失败的提示信息。其中,抽象语法树为以树的形式对SQL语句的语法结构进行抽象表示;SQL的语法结构为SQL语句的语句形式,SQL的语句类型为操作数据库的类型,例如,创建表、删除表和修改表。
可选的,语法解析引擎可以是sqlparser,sqlparser语法解析引擎是Alibaba的开源项目Druid中的一个模块组件,sqlparser由Java实现,提供了对多种数据库的语法解析支持。
S302、针对每条SQL语句,判断该SQL语句对应的抽象语法树是否被成功构建,若是,执行步骤S303,若否,执行步骤S304。
针对每条SQL语句,若该SQL语句对应的抽象语法树被成功构建,说明该SQL语句的语法是正确的,因为只有语法正确的SQL语句才能构建出该SQL语句对应的抽象语法树。
若该SQL语句对应的抽象语法树未被成功构建,说明该SQL语句存在语法错误。
S303、确定SQL语句的语法正确。
S304、确定SQL语句的语法错误。
若存在任意一条SQL语句对应的抽象语法树未被成功构建,说明SQL语句集合存在语法不正确的SQL语句。
本申请实施例提供的方法中,基于语法解析引擎,对SQL语句进行抽象语法树的构建,通过判断每一条SQL语句对应的抽象语法树是否被成功构建,实现判断所有SQL语句的语法是否正确。
S103、按预设的审核规则,对每条SQL语句进行审核。
按预设的审核规则,对每条SQL语句进行审核,具体的,按预设的审核规则,对每条语句对应的各个数据库对象进行审核。其中,所述审核规则为用于判断SQL语句对应的各个数据库对象的存在性、约束性和命名、以及执行SQL语句对目标数据库的性能是否造成的影响的依据。目标数据库为目标数据库标识对应的数据库,目标数据库标识为SQL语句集合对应的数据库标识;数据库对象的存在性为目标数据库中存在该数据库对象,或SQL语句集合中包括创建数据库对象的目标SQL语句;目标SQL语句的在SQL语句集合中的为位置在数据库对象所属SQL语句之前。
数据库对象的约束性为目标数据库中不存在执行数据库对象的约束条件,或目标数据库中存在执行数据库对象的约束条件,但是SQL语句集合中包含满足该约束条件的目标SQL语句;目标SQL语句的在SQL语句集合中的为位置在数据库对象所属SQL语句之前。
本申请实施例提供的方法中,基于性能规则,审核执行SQL语句对目标数据库的性能是否造成的影响,性能规则为用于判断执行SQL语句对目标数据库的性能是否造成的影响的依据,本申请实施例提供的方法中,预设每个性能规则对应的指标值,性能规则对应的指标值用于说明执行满足该性能规则的SQL语句,对目标数据库的性能的影响程度,指标值越高说明执行SQL语句对目标数据库的影响越大。
对数据库对象的存在性进行审核的过程进行举例说明如下:
SQL语句用于删除person表中ID为预设ID的数据,对于SQL语句包含的数据库对象person表的存在性进行审核的过程包括:判断目标数据库中存不存在该person表,若目标数据库中存在person表,则确定数据库对象person表通过存在性的审核,若目标数据库中不存在person表,则基于SQL语句集合中各条SQL语句的排列顺序,判断SQL语句集合中在该数据库对象所属的SQL语句之前是否存在用于创建person表的SQL语句,若存在,则确定通过存在性的审核,否则,未通过存在性的审核。
对数据库对象的约束性进行审核的过程进行举例说明如下:
SQL语句用于删除目标表格(比如学生表)中ID为预设ID的数据,对于SQL语句提及的删除ID为预设ID的数据的约束性进行审核的过程为:判断目标数据库中删除目标表格中ID为预设ID的数据是否存在约束条件,若不存在约束条件,则确定通过约束性的审核,若存在约束条件,则基于SQL语句集合中各条SQL语句的排列顺序,判断SQL语句集合中在该数据库对象所属的SQL语句之前是否存在满足该约束条件的SQL语句,若存在满足该约束条件的SQL语句,则确定通过约束性的审核,否则确定未通过约束性的审核。
基于性能规则,审核执行SQL语句对目标数据库的性能是否造成的影响的过程,进行举例说明如下:
SQL语句用于创建预设行数、预设列数的表格(比如100行、100列的学生表)时,预先设定SQL语句的初始分数为0,预设性能阈值为10,性能规则规定创建一张预设行数、预设列数的表格(比如100行100列的表)对数据库会对数据库的性能造成影响,影响程度可以以预设的与预设行数、预设列数对应的指标值(比如0.1)表示,从而可以确定出执行该SQL语句对数据库的性能的影响程度为0.1。
针对每条SQL语句,遍历该SQL语句对应的抽象语法树,获取抽象语法中每个节点的节点信息,基于各个节点信息,获取SQL语句对应的各个数据库对象,其中,节点信息包括数据库对象,其中,数据库对象为数据库的组成部分,包括但不限于:表、视图、索引、约束和函数。
针对每条SQL语句,判断SQL语句对应的每一个数据库对象是否满足预设的审核规则,若任意一个数据库对象不满足审核规则,则判断出SQL语句不满足审核规则,若该SQL语句对应的所有数据库对象均满足审核规则,则判断出SQL语句满足审核规则。
参阅图4,判断SQL语句对应的每一个数据库对象是否满足预设的审核规则的过程,包括:
S401、基于目标数据库,对SQL语句对应的每个数据库对象的存在性和约束性进行审核。
对SQL语句对应的每个数据库对象的存在性进行审核,其中,数据库对象的存在性用于表征目标数据库中是否存在该数据库对象,目标数据库为目标数据库标识对应的数据库,目标数据库标识为SQL语句集合对应的数据库标识。针对每个数据库对象,对该数据库对象的存在进行审核的过程包括:判断目标数据库中是否存在该数据库对象,若存在,说明该数据库对象满足存在性的审核,若不存在,则基于SQL语句集合中各条SQL语句的排列顺序,判断SQL语句集合中在该数据库对象所属的SQL语句之前是否存在用于创建该数据库对象的SQL语句,若存在用于创建该数据库对象的SQL语句,则说明该数据库对象满足存在性的审核。
例如,SQL语句集合中存在两条SQL语句,第一条SQL语句用于创建表A,第二条SQL语句用于在表A中***一条记录,对于数据库对象表A,目标数据库中不存在该表A,由于第一条SQL语句创建了该表A,因此判断出该表A满足存在性的审核。
对SQL语句对应的每个数据库对象的约束性进行审核,数据库对象的约束性用于表征在数据库执行数据库对象是否存在条件,针对每个数据库对象,对该数据库对应的约束性进行审核的过程包括:针对SQL语句对应的每个数据库对象,判断在目标数据库中执行该数据库对象是否存在条件,若不存在,则说明该数据库对象满足约束性的审核,若在目标数据库中执行该数据库对象存在条件,则基于SQL语句集合中各条SQL语句的排列顺序,判断SQL语句集合中在该数据库对象所对应的SQL语句之前是否存在满足该条件的SQL语句,若存在满足该条件的SQL语句,则说明该数据库对象满足约束性的审核。
S402、判断是否所有的数据对象均满足存在性和约束性的审核,若是,执行步骤S403,若否,执行步骤S404。
S403、判断每个数据库对象的命名规则是否满足预设的自定义规则,若满足,执行步骤S405,若不满足,执行步骤404。
本申请实施例提供的方法中,预设自定义规则,自定义规则为审核数据库对象的命名的条件,需要说明的是,自定义规则可以根据需求进行修改。
判断每个数据库对象的命名规则是否满足预设的自定义规则,例如,自定义规则中预先定义表名的第一个字母需大写,若数据库对象为学生表,若学生表的表名首字母为大写,则满足该自定义规则,若学生表的表名首字母为小写,则不满足自定义规则。
S404、确定存在SQL语句对应的数据库对象不满足预设的审核规则。
若存在的数据对象不满足存在性和/或约束性的审核,或数据库对象的命名规则不满足预设的自定义规则、或SQL语句的性能指标值不小于预设性能阈值,则确定存在SQL语句对应的数据库对象不满足预设的审核规则。
S405、基于SQL语句对应的所有数据库对象,统计SQL语句的性能指标值。
本申请实施例提供的方法中,预先设定多个性能规则,以及预先设定每个性能规则对应的指标值。
获取SQL语句的执行计划、以及每个数据库对象的元数据信息,其中,SQL语句的执行计划为执行该SQL语句的结果,数据库对象的元数据信息为表的相关信息,例如,表名、字段的名称、字段的类型、表的总行数等。
基于SQL语句的执行计划以及该SQL语句对应的每个数据库对象的元数据信息,确定该SQL语句所满足的预设的性能规则,基于该SQL语句所满足的预设的性能规则、以及每个性能规则对应的指标值,统计SQL语句的性能指标值,其中,SQL语句的性能指标值为以数值的形式说明执行该SQL语句对目标数据库的性能造成的影响。
S406、判断SQL语句的性能指标值是否小于预设性能阈值,若是,执行步骤S407,若否,执行步骤S404。
S407、确定SQL语句对应的所有数据库对象均满足预设的审核规则。
本申请实施例提供的方法中,通过对数据库对象的存在性和约束性进行审核、对数据库对象的命名进行自定义规则审核、以及对SQL语句的性能指标值与预设性能阈值的比较,实现判断数据库对象是否满足审核规则,从而实现判断SQL语句是否满足审核规则。
S104、确定SQL语句集合未通过审核。
若存在任意一条SQL语句的语法不正确,或存在存在任意一条语句不满足审核规则,则判断出SQL语句集合未通过审核。
可选的,在判断出SQL语句集合未通过审核后,还可以输出SQL语句集合未通过审核的提示信息。
S105、判断是否所有的SQL语句均满足审核规则,若是,执行步骤S106,若否,执行步骤S104。
S106、确定SQL语句集合通过审核。
若SQL语句集合中包含的每条SQL语句均满足审核规则,则判断出SQL语句集合通过审核。
可选的,在判断出SQL语句集合通过审核之后,还可以包括:
生成审核报告信息,并存储审核报告信息;
将审核报告信息进行可视化展示。
本申请实施例提供的方法中,在判断出SQL语句集合通过审核之后,还可以基于审核的结果信息,调用预设的报告模板,生成审核报告信息,并将审核报告信息存储至云平台的磁盘中,以及将审核报告信息进行可视化展示,可选的,用户可以对该审核报告信息进行下载。
本申请实施例提供的SQL语句审核方法,获取SQL语句集合,判断每条SQL语句的语法是否正确,若所有的SQL语句的语法均正确,则按预设的审核规则,对每条SQL语句进行审核,若所有的SQL语句均满足审核规则,则确定SQL语句集合通过审核。应用本申请提供的SQL语句审核方法,自动对SQL语句集合中的每一条SQL语句的语法进行审核,并在所有的SQL语句的语法正确的情况下,基于审核规则对SQL语句进行审核,整个过程无需任何人工干预,从而节省了大量的时间成本和人力成本,以及极大的提升了SQL语句审核的效率。
与图1所述的方法相对应,本申请实施例还提供了一种SQL语句审核装置,用于对图1中方法的具体实现,其结构示意图如图5所示,具体包括:
获取单元501,用于获取SQL语句集合;所述SQL语句集合中包括至少一条SQL语句;
判断单元502,用于判断每条SQL语句的语法是否正确;
审核单元503,用于若所有的SQL语句的语法均正确,则按预设的审核规则,对每条SQL语句进行审核;
确定单元504,用于若所有的SQL语句均满足所述审核规则,则确定所述SQL语句集合通过审核。
本申请实施例提供的SQL语句审核装置,获取SQL语句集合,判断每条SQL语句的语法是否正确,若所有的SQL语句的语法均正确,则按预设的审核规则,对每条SQL语句进行审核,若所有的SQL语句均满足审核规则,则确定SQL语句集合通过审核。应用本申请提供的SQL语句审核装置,自动对SQL语句集合中的每一条SQL语句的语法进行审核,并在所有的SQL语句的语法正确的情况下,基于审核规则对SQL语句进行审核,整个过程无需任何人工干预,从而节省了大量的时间成本和人力成本,以及极大的提升了SQL语句审核的效率。
在本申请的一个实施例中,基于前述方案,获取单元执行获取SQL语句集合,具体用于:
获取SQL文件;所述SQL文件中至少包括SQL文本和所述SQL文本对应的数据库标识;
对所述SQL文本进行SQL语句划分,得到多条SQL语句;
将所有的SQL语句组成SQL语句集合。
在本申请的一个实施例中,基于前述方案,判断单元502执行判断每条SQL语句的语法是否正确,具体用于:
针对每条SQL语句,对所述SQL语句进行抽象语法树的构建;判断所述SQL语句对应的抽象语法树是否被成功构建;若所述SQL语句对应的抽象语法树被成功构建,则确定所述SQL语句的语法正确。
在本申请的一个实施例中,基于前述方案,审核单元503配置为:
获取子单元,用于针对每条SQL语句,遍历所述SQL语句对应的抽象语法树,获取所述抽象语法树中每个节点的节点信息,基于各个节点信息,获取所述SQL语句对应的各个数据库对象;
判断子单元,用于针对每条SQL语句,判断所述SQL语句对应的每一个数据库对象是否满足预设的审核规则,若任意一个数据库对象不满足所述审核规则,则确定所述SQL语句不满足所述审核规则,若所述SQL语句对应的每一个数据库对象均满足所述审核规则,则确定所述SQL语句满足所述审核规则。
在本申请的一个实施例中,基于前述方案,判断子单元执行判断所述SQL语句对应的每一个数据库对象是否满足预设的审核规则,具体用于:
基于目标数据库,对所述SQL语句对应的每个数据库对象的存在性和约束性进行审核;所述目标数据库为所述SQL文件中包含的数据库标识所对应的数据库;
当所有的数据库对象均满足存在性和约束性的审核时,判断每个所述数据库对象的命名规则是否满足预设的自定义规则;
若所有的数据库对应均满足所述自定义规则,则基于所述SQL语句对应的所有数据库对象,统计所述SQL语句的性能指标值;
当所述SQL语句的性能指标值小于预设性能阈值时,确定所述SQL语句对应的每一个数据库对象满足预设的审核规则。
在本申请的一个实施例中,基于前述方案,还可以配置为:
输出单元,用于若任意一个SQL语句的语法不正确或任意一条SQL语句不满足所述审核规则,则确定所述SQL语句集合未通过审核
在本申请的一个实施例中,基于前述方案,还可以配置为:
生成单元,用于生成审核报告信息,并存储所述审核报告信息;
展示单元,用于将所述审核报告信息进行可视化展示。
本申请实施例还提供了一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行上述SQL语句审核方法。
本申请实施例还提供了一种电子设备,其结构示意图如图6所示,具体包括存储器601,以及一个或者一个以上的指令602,其中一个或者一个以上指令602存储于存储器601中,且经配置以由一个或者一个以上处理器603执行所述一个或者一个以上指令602进行以下操作:
获取SQL语句集合;所述SQL语句集合中包括至少一条SQL语句;
判断每条SQL语句的语法是否正确;
若所有的SQL语句的语法均正确,则按预设的审核规则,对每条SQL语句进行审核;
若所有的SQL语句均满足所述审核规则,则确定所述SQL语句集合通过审核。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
以上对本申请所提供的一种SQL语句审核方法及装置、存储介质及电子设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种SQL语句审核方法,其特征在于,包括:
获取SQL语句集合;所述SQL语句集合中包括至少一条SQL语句;
判断每条SQL语句的语法是否正确;
若所有的SQL语句的语法均正确,则按预设的审核规则,对每条SQL语句进行审核;
若所有的SQL语句均满足所述审核规则,则确定所述SQL语句集合通过审核。
2.根据权利要求1所述的方法,其特征在于,所述获取SQL语句集合,包括:
获取SQL文件;所述SQL文件中至少包括SQL文本和所述SQL文本对应的数据库标识;
对所述SQL文本进行SQL语句划分,得到多条SQL语句;
将所有的SQL语句组成SQL语句集合。
3.根据权利要求2所述的方法,其特征在于,所述判断每条SQL语句的语法是否正确,包括:
针对每条SQL语句,对所述SQL语句进行抽象语法树的构建;判断所述SQL语句对应的抽象语法树是否被成功构建;若所述SQL语句对应的抽象语法树被成功构建,则确定所述SQL语句的语法正确。
4.根据权利要求3所述的方法,其特征在于,所述按预设的审核规则,对每条SQL语句进行审核,包括:
针对每条SQL语句,遍历所述SQL语句对应的抽象语法树,获取所述抽象语法树中每个节点的节点信息,基于各个节点信息,获取所述SQL语句对应的各个数据库对象;
针对每条SQL语句,判断所述SQL语句对应的每一个数据库对象是否满足预设的审核规则,若任意一个数据库对象不满足所述审核规则,则确定所述SQL语句不满足所述审核规则,若所述SQL语句对应的每一个数据库对象均满足所述审核规则,则确定所述SQL语句满足所述审核规则。
5.根据权利要求4所述的方法,其特征在于,所述判断所述SQL语句对应的每一个数据库对象是否满足预设的审核规则,包括:
基于目标数据库,对所述SQL语句对应的每个数据库对象的存在性和约束性进行审核;所述目标数据库为所述SQL文件中包含的数据库标识所对应的数据库;
当所有的数据库对象均满足存在性和约束性的审核时,判断每个所述数据库对象的命名规则是否满足预设的自定义规则;
若所有的数据库对应均满足所述自定义规则,则基于所述SQL语句对应的所有数据库对象,统计所述SQL语句的性能指标值;
当所述SQL语句的性能指标值小于预设性能阈值时,确定所述SQL语句对应的每一个数据库对象满足预设的审核规则。
6.根据权利要求1或5所述的方法,其特征在于,还包括:
若任意一个SQL语句的语法不正确或任意一条SQL语句不满足所述审核规则,则确定所述SQL语句集合未通过审核。
7.根据权利要求1所述的方法,其特征在于,所述判断出所述SQL语句集合通过审核之后,还包括:
生成审核报告信息,并存储所述审核报告信息;
将所述审核报告信息进行可视化展示。
8.一种SQL语句审核装置,其特征在于,包括:
获取单元,用于获取SQL语句集合;所述SQL语句集合中包括至少一条SQL语句;
判断单元,用于判断每条SQL语句的语法是否正确;
审核单元,用于若所有的SQL语句的语法均正确,则按预设的审核规则,对每条SQL语句进行审核;
确定单元,用于若所有的SQL语句均满足所述审核规则,则确定所述SQL语句集合通过审核。
9.一种存储介质,其特征在于,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行如权利要求1~7任意一项所述的SQL语句审核方法。
10.一种电子设备,其特征在于,包括存储器,以及一个或者一个以上的指令,其中一个或者一个以上指令存储于存储器中,且经配置以由一个或者一个以上处理器执行如权利要求1~7任意一项所述的SQL语句审核方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110004915.XA CN112783916A (zh) | 2021-01-04 | 2021-01-04 | Sql语句审核方法及装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110004915.XA CN112783916A (zh) | 2021-01-04 | 2021-01-04 | Sql语句审核方法及装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112783916A true CN112783916A (zh) | 2021-05-11 |
Family
ID=75755199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110004915.XA Pending CN112783916A (zh) | 2021-01-04 | 2021-01-04 | Sql语句审核方法及装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112783916A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115129746A (zh) * | 2022-08-30 | 2022-09-30 | 平安银行股份有限公司 | Sql审核分析方法、服务器及sql审核分析*** |
CN117435515A (zh) * | 2023-12-21 | 2024-01-23 | 云和恩墨(北京)信息技术有限公司 | 基于数据库的sql语句审核方法、装置、设备及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104391995A (zh) * | 2014-12-15 | 2015-03-04 | 北京趣拿软件科技有限公司 | 一种sql语句审核的方法、数据库运维的方法及*** |
CN110427754A (zh) * | 2019-08-12 | 2019-11-08 | 腾讯科技(深圳)有限公司 | 网络应用攻击检测方法、装置、设备及存储介质 |
CN110581864A (zh) * | 2019-11-11 | 2019-12-17 | 北京安博通科技股份有限公司 | 一种sql注入攻击的检测方法及装置 |
CN110795450A (zh) * | 2019-09-12 | 2020-02-14 | 连连银通电子支付有限公司 | Sql处理方法及装置 |
CN111078675A (zh) * | 2020-03-23 | 2020-04-28 | 绿漫科技有限公司 | 一种多维度的综合数据库sql审核及优化方法和*** |
CN111522816A (zh) * | 2020-04-16 | 2020-08-11 | 云和恩墨(北京)信息技术有限公司 | 基于数据库引擎的数据处理方法、装置、终端及介质 |
CN111917788A (zh) * | 2020-08-07 | 2020-11-10 | 四川长虹电器股份有限公司 | 基于hmm模型的sql注入攻击检测方法 |
-
2021
- 2021-01-04 CN CN202110004915.XA patent/CN112783916A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104391995A (zh) * | 2014-12-15 | 2015-03-04 | 北京趣拿软件科技有限公司 | 一种sql语句审核的方法、数据库运维的方法及*** |
CN110427754A (zh) * | 2019-08-12 | 2019-11-08 | 腾讯科技(深圳)有限公司 | 网络应用攻击检测方法、装置、设备及存储介质 |
CN110795450A (zh) * | 2019-09-12 | 2020-02-14 | 连连银通电子支付有限公司 | Sql处理方法及装置 |
CN110581864A (zh) * | 2019-11-11 | 2019-12-17 | 北京安博通科技股份有限公司 | 一种sql注入攻击的检测方法及装置 |
CN111078675A (zh) * | 2020-03-23 | 2020-04-28 | 绿漫科技有限公司 | 一种多维度的综合数据库sql审核及优化方法和*** |
CN111522816A (zh) * | 2020-04-16 | 2020-08-11 | 云和恩墨(北京)信息技术有限公司 | 基于数据库引擎的数据处理方法、装置、终端及介质 |
CN111917788A (zh) * | 2020-08-07 | 2020-11-10 | 四川长虹电器股份有限公司 | 基于hmm模型的sql注入攻击检测方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115129746A (zh) * | 2022-08-30 | 2022-09-30 | 平安银行股份有限公司 | Sql审核分析方法、服务器及sql审核分析*** |
CN117435515A (zh) * | 2023-12-21 | 2024-01-23 | 云和恩墨(北京)信息技术有限公司 | 基于数据库的sql语句审核方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111522816B (zh) | 基于数据库引擎的数据处理方法、装置、终端及介质 | |
US11023367B1 (en) | Systems and methods for testing a software application | |
CN102804147B (zh) | 执行abap源代码的代码检查的代码检查执行*** | |
CN106598612B (zh) | 一种数据库中数据表的操作方法及*** | |
CN105912594B (zh) | Sql语句处理方法和*** | |
KR101554424B1 (ko) | 테스트 케이스 생성 자동화 방법 및 장치 | |
US9037552B2 (en) | Methods for analyzing a database and devices thereof | |
CN112783916A (zh) | Sql语句审核方法及装置、存储介质及电子设备 | |
CN105335246B (zh) | 一种基于问答网站分析的程序崩溃缺陷自动修复方法 | |
CN107766353B (zh) | 一种数据库统计信息迁移的方法和设备 | |
CN112328489A (zh) | 测试用例生成方法、装置、终端设备和存储介质 | |
CN116842042A (zh) | 异化数据库的通用方法、装置、电子设备及存储介质 | |
CN111190880B (zh) | 一种数据库检测方法、装置和计算机可读存储介质 | |
CN115238655A (zh) | 一种json数据编辑方法和装置 | |
CN114385679A (zh) | 一种表结构巡检方法、表结构巡检装置和电子设备 | |
CN113051262B (zh) | 一种数据质检方法、装置、设备及存储介质 | |
CA3148074A1 (en) | Text information extracting method, device, computer equipment and storage medium | |
CN113836164A (zh) | 统一sql的方法、***、设备及介质 | |
CN113778997B (zh) | 一种数据库版本管理方法、***及设备 | |
CN115687292B (zh) | 一种可验证的与数据库技术无关的数据库升级方法 | |
CN111221846B (zh) | 一种sql语句的自动翻译方法及装置 | |
CN115599976B (zh) | 用户分群方法、装置、电子设备及存储介质 | |
CN117493391A (zh) | 任务匹配方法、装置、计算机设备及存储介质 | |
CN117608582A (zh) | 一种sql语句管理方法、装置、电子设备及存储介质 | |
CN117472958A (zh) | Sql语句执行结果的验证方法、装置、设备及介质 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210511 |