基于国产环境的SQL语句通用性检测方法及系统技术方案

技术编号:36758952 阅读:14 留言:0更新日期:2023-03-04 10:52
本发明专利技术公开了基于国产环境的SQL语句通用性检测方法及系统,属于数据库技术领域,要解决的技术问题为如何对数据库语法进行判断,以实现在软件开发时提前实现数据库的兼容性。包括如下步骤:对于每种类型的数据库语法,创建XML格式的数据库语法库、并形成XML文件,并根据数据库语法的特性,在将XML划分为不同的关键字节点,并为各个关键字节点设置不同的属性;创建关键字、函数以及数据类型的JSON文件;按照空格和逗号将SQL语句拆分为字符串数组,将字符串数组与XML文件以及JSON文件进行匹配。配。配。

【技术实现步骤摘要】
基于国产环境的SQL语句通用性检测方法及系统


[0001]本专利技术涉及数据库
,具体地说是基于国产环境的SQL语句通用性检测方法及系统。

技术介绍

[0002]目前关系型数据库依然是应用和使用范围最广的数据库类型,随着国内数据库厂商的崛起,关系型数据库的种类从传统的几家国际主流数据库厂商转变成了十几家数据库种类,而且目前还有不断增加的趋势。随着时代的进步和技术的发展,数据库也在不断的发展,数据库厂商根据自己对新技术和性能的理解,纷纷提出了自己特有的SQL语法和功能,使得SQL标准越来越不能满足实际需要,各个数据库语法之间的差异越来越大。数据库语法差异的扩大导致软件开发厂商开发的软件数据库兼容性越来越差,而客户在进行软件选购时,往往会指定使用某种数据库,这就使得软件开发厂商需要花大力气去修改软件程序以实现数据库的兼容,进而对研发成本和研发进度产生了非常不利的影响。
[0003]如何对数据库语法进行判断,以实现在软件开发时提前实现数据库的兼容性,时需要解决的技术问题。

技术实现思路

[0004]本专利技术的技术任务是针对以上不足,提供基于国产环境的SQL语句通用性检测方法及系统,来解决如何对数据库语法进行判断,以实现在软件开发时提前实现数据库的兼容性的技术问题。
[0005]第一方面,本专利技术一种SQL语句通用性检测方法,应用于配置有国产CPU和国产操作系统的国产环境,包括如下步骤:
[0006]对于每种类型的数据库语法,创建XML格式的数据库语法库、并形成XML文件,并根据数据库语法的特性,在将XML划分为不同的关键字节点,并为各个关键字节点设置不同的属性;
[0007]创建关键字、函数以及数据类型的JSON文件;
[0008]对于需要校验的SQL语句,按照空格和逗号将所述SQL语句拆分为字符串数组,将字符串数组与XML文件以及JSON文件进行匹配,根据关键字JSON文件判断所述SQL语句的语法类型,根据函数JSON文件判断SQL语句中使用的函数是否与数据库匹配,根据XML文件以及数据库类型JSON文件判断所述SQL语句的语法和使用的数据类型是否与数据库适配。
[0009]作为优选,SQL语句具有四种数据库语法,分别为DQL、DML、DDL和DCL;
[0010]根据数据库语法的特性,在关键字节点上设置不同的属性,包括:
[0011]对于DQL语法,将XML文件拆分为必须有的关键字节点和可选的关键字节点,将必须存在的关键字节点添REQUIRED属性,将可选的关键字节点添加OPTIONAL属性,将固定写法的关键字节点添加BOTTOM属性,将关键字的特殊要求的语法写入到GRAMMAR属性;
[0012]对于DDL语法,将XML文件划分为多个二级节点,并在二级节点内将关键字拆分为
必须有的关键字和可选关键字,将必须存在的关键字节点添REQUIRED属性,将可选的关键字节点添加OPTIONAL属性,将固定写法的关键字节点添加BOTTOM属性,将关键字的特殊要求的语法写入到GRAMMAR属性,将需要用到数据类型的语法加上DATATYPE属性;
[0013]对于DML语法,将XML文件划分为多个二级节点,在二级节点内,将关键字节点拆分为必须的关键字节点和可选的关键字节点,对于必须的关键字节点添加REQUIRED属性,将可选关键字添加OPTIONAL属性(例如WHERE关键字),将固定写法的关键字节点添加BOTTOM属性,将关键字的特殊要求的语法写入到GRAMMAR属性;
[0014]对于DCL语法,将XML文件划分为多个二级节点,在二级节点内,将关键字节点拆分为必须的关键字节点和可选的关键字节点,对于必须的关键字节点添加REQUIRED属性,将可选的关键字节点添加OPTIONAL属性,将固定写法的关键字添加BOTTOM属性。
[0015]作为优选,对于关键字、函数以及数据库类型,分别创建数据库内自带固定格式的JSON文件;
[0016]其中,关键字JSON文件以keywords开头,函数JSON文件以functionname开头,数据类型的JSON文件以datatype开头。
[0017]作为优选,将字符串数组与XML文件以及JSON文件进行匹配,包括如下步骤:
[0018]关键字匹配:将字符串和关键字JSON文件进行匹配,找出SQL语句的关键字,根据首个关键字,判断该SQL语句是DQL、DDL、DML、DCL哪一种;根据第一个或第二个关键字,判断出SQL语句属于哪个二级节点;
[0019]函数匹配:通过判断字符串是否有左括号或者后一个字符串是否是左括号,取出来SQL语句中的函数名,将函数名和函数JSON匹配,判断函数名是否在函数JSON中,如果不在则判断所述SQL语句和数据库不匹配;查询到左括号后面的第一个右括号,然后将左括号和右括号之间的字符串合并为一个字符串,通过KMP算法判断该字符串是否符合函数的语法格式,如果不符合则认定所述SQL语句和数据库不匹配;
[0020]必填关键字判断:将二级节点中的必填关键字和SQL语句的字符串进行匹配,判断是否有遗漏的必填关键字,如果存在则判断该SQL语句和数据库不适配;
[0021]关键字固定写法匹配:将带有固定写法的关键字的语法通过KPM算法和SQL语句字符串进行匹配,对于不符合固定写法的情况,判断SQL语句和数据库不适配;
[0022]关键字特殊语法匹配:将关键字的特殊语法进行拆分,拆分规则为单引号、百分号和关键字,根据所述拆分规则,将SQL语句进行同步拆分,根据KPM算法判断SQL语句的拆分内容是否匹配特殊语法的拆分内容,如果不匹配则认定SQL语句和数据库不适配;
[0023]数据类型关键字匹配:查询出XML文件中带有DATATYPE属性的语法关键字,将两个语法关键字中间的字符串重新根据逗号分割,然后再次按照空格分割,定位出字段名和数据类型,将数据类型和数据类型JSON进行匹配,如果不匹配则认定SQL语句和数据库不适配。
[0024]第二方面,本专利技术一种SQL语句通用性检测系统,用于通过如第一方面任一项所述的SQL语句通用性检测方法对SQL语句进行通用性检测,判断是否与数据库适配,所述系统包括:
[0025]XML构建模块,对于每种类型的数据库语法,所述XML构建模块用于创建XML格式的数据库语法库、并形成XML文件,并根据数据库语法的特性,在将XML划分为不同的关键字节
点,并为各个关键字节点设置不同的属性;
[0026]JSON文件构建模块,所述JSON文件构建模块用于创建关键字、函数以及数据类型的JSON文件;
[0027]SQL语句校验模块,对于需要校验的SQL语句,所述SQL语句校验模块用于按照空格和逗号将所述SQL语句拆分为字符串数组,将字符串数组与XML文件以及JSON文件进行匹配,根据关键字JSON文件判断所述SQL语句的语法类型,根据函数JSON文件判断SQL语句中使用的函数是否本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于国产环境的SQL语句通用性检测方法,其特征在于,应用于配置有国产CPU和国产操作系统的国产环境,包括如下步骤:对于每种类型的数据库语法,创建XML格式的数据库语法库、并形成XML文件,并根据数据库语法的特性,在将XML划分为不同的关键字节点,并为各个关键字节点设置不同的属性;创建关键字、函数以及数据类型的JSON文件;对于需要校验的SQL语句,按照空格和逗号将所述SQL语句拆分为字符串数组,将字符串数组与XML文件以及JSON文件进行匹配,根据关键字JSON文件判断所述SQL语句的语法类型,根据函数JSON文件判断SQL语句中使用的函数是否与数据库匹配,根据XML文件以及数据库类型JSON文件判断所述SQL语句的语法和使用的数据类型是否与数据库适配。2.根据权利要求1所述的基于国产环境的SQL语句通用性检测方法,其特征在于,SQL语句具有四种数据库语法,分别为DQL、DML、DDL和DCL;根据数据库语法的特性,在关键字节点上设置不同的属性,包括:对于DQL语法,将XML文件拆分为必须有的关键字节点和可选的关键字节点,将必须存在的关键字节点添REQUIRED属性,将可选的关键字节点添加OPTIONAL属性,将固定写法的关键字节点添加BOTTOM属性,将关键字的特殊要求的语法写入到GRAMMAR属性;对于DDL语法,将XML文件划分为多个二级节点,并在二级节点内将关键字拆分为必须有的关键字和可选关键字,将必须存在的关键字节点添REQUIRED属性,将可选的关键字节点添加OPTIONAL属性,将固定写法的关键字节点添加BOTTOM属性,将关键字的特殊要求的语法写入到GRAMMAR属性,将需要用到数据类型的语法加上DATATYPE属性;对于DML语法,将XML文件划分为多个二级节点,在二级节点内,将关键字节点拆分为必须的关键字节点和可选的关键字节点,对于必须的关键字节点添加REQUIRED属性,将可选关键字添加OPTIONAL属性(例如WHERE关键字),将固定写法的关键字节点添加BOTTOM属性,将关键字的特殊要求的语法写入到GRAMMAR属性;对于DCL语法,将XML文件划分为多个二级节点,在二级节点内,将关键字节点拆分为必须的关键字节点和可选的关键字节点,对于必须的关键字节点添加REQUIRED属性,将可选的关键字节点添加OPTIONAL属性,将固定写法的关键字添加BOTTOM属性。3.根据权利要求1所述的基于国产环境的SQL语句通用性检测方法,其特征在于,对于关键字、函数以及数据库类型,分别创建数据库内自带固定格式的JSON文件;其中,关键字JSON文件以keywords开头,函数JSON文件以functionname开头,数据类型的JSON文件以datatype开头。4.根据权利要求2所述的基于国产环境的SQL语句通用性检测方法,其特征在于,将字符串数组与XML文件以及JSON文件进行匹配,包括如下步骤:关键字匹配:将字符串和关键字JSON文件进行匹配,找出SQL语句的关键字,根据首个关键字,判断该SQL语句是DQL、DDL、DML、DCL哪一种;根据第一个或第二个关键字,判断出SQL语句属于哪个二级节点;函数匹配:通过判断字符串是否有左括号或者后一个字符串是否是左括号,取出来SQL语句中的函数名,将函数名和函数JSON匹配,判断函数名是否在函数JSON中,如果不在则判断所述SQL语句和数据库不匹配;查询到左括号后面的第一个右括号,然后将左括号和右括
号之间的字符串合并为一个字符串,通过KMP算法判断该字符串是否符合函数的语法格式,如果不符合则认定所述SQL语句和数据库不匹配;必填关键字判断:将二级节点中的必填关键字和SQL语句的字符串进行匹配,判断是否有遗漏的必填关键字,如果存在则判断该SQL语句和数据库不适配;关键字固定写法匹配:将带有固定写法的关键字的语法通过KPM算法和SQL语句字符串进行匹配,对于不符合固定写法的情况,判断SQL语句和数据库不适配;关键字特殊语法匹配:将关键字的特殊语法进行拆分,拆分规则为单引号、百分号和关键字,根据所述拆分规则,将SQL语句进行同步拆分,根据KPM算法判断SQL语句的拆分内容是否匹配特殊语法的拆分内容,如果不匹配则认定SQL语句和数据库不适配;数据类型关键字匹配:查询出XML文件中带有DATATYPE属性的语法关键字,将两个语法关键字中间的字符串重新根据逗号分割,然后再次按照空格分割,定位出字段名和数据类型,将数据类型和数据类型JSON进行匹配,如果不匹配则认定SQL语句和数据库不适配。5.一种基于国产环境的SQL语句通用性检测系统,其特征在于,用于通过如权利要求1

4任一项所述的SQL语句通用性检测方法对SQL语...

【专利技术属性】
技术研发人员:李春龙宋晓琳董桂森
申请(专利权)人:浪潮软件集团有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1