CN113986950A - 一种sql语句处理方法、装置、设备及存储介质 - Google Patents
一种sql语句处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113986950A CN113986950A CN202111256980.8A CN202111256980A CN113986950A CN 113986950 A CN113986950 A CN 113986950A CN 202111256980 A CN202111256980 A CN 202111256980A CN 113986950 A CN113986950 A CN 113986950A
- Authority
- CN
- China
- Prior art keywords
- sql
- sql statement
- historical
- statement
- target
- 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
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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Computation (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Computational Linguistics (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种SQL语句处理方法、装置、设备及存储介质。本发明实施例涉及自然语言处理领域,该方法包括:获取待检测SQL语句、N个历史SQL语句集合以及2N个模型,其中,N为大于或者等于2的正整数;根据待检测SQL语句、N个历史SQL语句集合以及2N个模型确定目标SQL语句集合,其中,所述目标SQL语句集合包括:历史SQL语句集合中与所述待检测SQL语句的相似度数值排序前M的第一历史SQL语句,M为大于或者等于3的正整数;获取目标SQL语句集合中相似度最高的目标SQL语句,并显示所述目标SQL语句。通过本发明的技术方案,能够实现在运行SQL语句建立数据项之前对SQL语句的相似度检测,可以快速且准确的找出相似的SQL语句,保证了数据项建立的唯一性。
Description
技术领域
本发明实施例涉及自然语言处理领域,尤其涉及一种SQL语句处理方法、装置、设备及存储介质。
背景技术
在项目开发中,我们经常需要使用SQL语句来对数据库进行一些比如增删改查等的操作。有一种特定的新建数据项的场景由于要保证数据项建立的唯一性,但是又不允许在建立数据项后进行是否重复建项的排查工作,因此需要在运行SQL语句建立数据项之前进行SQL语句的相似度检测,以防止重复建立具有相同含义的数据项。
现有技术方案中存在使用一些简单的文本字符串比对的检测方案来进行字符串相似度的计算,针对a=b,b=a的类似的语句无法正确的判断出相似度。实际上他们在某一些条件下是相似的,而简单的文本字符串比对方式会将他们判断为不相似,这将相似度检测的精确度。已有技术还通过使用分类算法来进行SQL语句的相似度判断,当然了这种方式能大体上找出相似的,不满足精确性的要求。
深度学习在自然语言处理领域的应用也十分的广泛。但是使用这些方法在针对SQL语句去重的时候存在着很多问题,大量不同形态的数据的整理和模型的训练将消耗大量的时间,而且在很大可能上由于模型的高复杂度会造成上线后检测的效率低下,且可移植性差。
发明内容
本发明实施例提供一种SQL语句处理方法、装置、设备及存储介质,以实现在SQL语句建立数据项之前进行SQL语句的相似度检测,防止重复建立具有相同含义的数据项。
第一方面,本发明实施例提供了一种SQL语句处理方法,包括:
获取待检测SQL语句、N个历史SQL语句集合以及2N个模型,其中,N为大于或者等于2的正整数;
根据待检测SQL语句、N个历史SQL语句集合以及2N个模型确定目标SQL语句集合,其中,所述目标SQL语句集合包括:历史SQL语句集合中与所述待检测SQL语句的相似度数值排序前M的第一历史SQL语句,M为大于或者等于3的正整数;
获取目标SQL语句集合中相似度最高的目标SQL语句,并显示所述目标SQL语句。
第二方面,本发明实施例还提供了一种SQL语句处理装置,该装置包括:
获取模块,用于获取待检测SQL语句、N个历史SQL语句集合以及2N个模型,其中,N为大于或者等于2的正整数;
确定模块,用于根据待检测SQL语句、N个历史SQL语句集合以及2N个模型确定目标SQL语句集合,其中,所述目标SQL语句集合包括:历史SQL语句集合中与所述待检测SQL语句的相似度数值排序前M的第一历史SQL语句,M为大于或者等于3的正整数;
显示模块,用于获取目标SQL语句集合中相似度最高的目标SQL语句,并显示所述目标SQL语句。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明实施例中任一所述的SQL语句处理方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例中任一所述的SQL语句处理方法。
本发明实施例通过获取待检测SQL语句、N个历史SQL语句集合以及2N个模型;根据待检测SQL语句、N个历史SQL语句集合以及2N个模型确定目标SQL语句集合;获取目标SQL语句集合中相似度最高的目标SQL语句,并显示目标SQL语句。与现有技术相比,解决了使用深度学习网络来进行学习以构建和训练复杂的模型来进行相似度检测需耗费的大量时间,且模型的计算复杂度高,方法可移植性差的问题,实现了快速且准确的找出相似的SQL语句的效果,保证了数据项建立的唯一性,对于其他脚本语句的相似度检测也具有很大的启示。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本发明实施例一提供的一种SQL语句处理方法的流程图;
图2是本发明实施例二提供的一种SQL语句处理装置的结构示意图;
图3是本发明实施例三提供的一种电子设备的结构示意图;
图4是本发明实施例四提供的一种包含计算机程序的计算机可读存储介质的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
实施例一
图1是本发明实施例一提供的一种SQL语句处理方法的流程图,本实施例可适用于检测SQL语句相似度的情况,该方法可以由本发明实施例中的一种SQL语句处理装置来执行,该装置可采用软件和/或硬件的方式实现,如图1所示,该方法具体包括如下步骤:
S101、获取待检测SQL语句、N个历史SQL语句集合以及2N个模型。
其中,N为大于或者等于2的正整数。
需要解释的是,待检测SQL语句可以理解为由用户新输入的,需要进行相似度检测的SQL语句。
需要说明的是,历史SQL语句集合指的是已有的存储在数据库中的SQL语句所形成的集合。从系统中采集相应的SQL语句经存储后形成历史SQL语句数据集合。
在本实施例中,模型可以理解为所建立的用来检测待检测SQL语句相似度的检测模型。获取历史SQL语句集合后基于历史SQL语句集合建立模型。例如可以是,基于历史SQL操作语句集合和BoW词袋模型生成第一模型;基于历史SQL定义语句集合和BoW词袋模型生成第二模型;基于历史SQL控制语句集合和BoW词袋模型生成第三模型;基于历史SQL嵌入语句集合和BoW词袋模型生成第四模型;基于历史SQL剩余语句集合和BoW词袋模型生成第五模型;基于历史SQL操作语句集合和TF-IDF模型生成第六模型;基于历史SQL定义语句集合和TF-IDF模型生成第七模型;基于历史SQL控制语句集合和TF-IDF模型生成第八模型;基于历史SQL嵌入语句集合和TF-IDF模型生成第九模型;基于历史SQL剩余语句集合和TF-IDF模型生成第十模型。本发明实施例中,基于BoW词袋模型和历史SQL语句集合生成N个模型,基于TF-IDF模型和历史SQL语句集合生成N个模型,总共得到2N个模型。
获取由用户输入的待检测SQL语句、已存在于数据库中的N个历史SQL语句集合以及所建立的用来进行SQL语句相似度检测的2N个模型,用于后续的SQL语句的相似度检测。
具体的,获取N个历史SQL语句集合包括:
a、获取历史SQL语句。
在本实施例中,历史SQL语句可以理解为已有的存储在数据库中的SQL语句。一般来说,数据库有可以提供历史SQL语句的功能,可以直接从数据库中导出历史SQL语句。
b、根据历史SQL语句创建第一SQL语句集合。
其中,第一SQL语句集合可以是将第一条采集到的历史SQL语句先存储起来,可以假设存在A集合中,集合A即为第一SQL语句集合。
具体的,根据历史SQL语句创建第一SQL语句集合,包括:
将首条历史SQL语句存储至第一SQL语句集合。
在本实施例中,首条历史SQL语句可以理解为采集到的第一条历史SQL语句。
将与第一SQL语句集合中的SQL语句不同的非首条历史SQL语句存储至第一SQL语句集合。
其中,非首条历史SQL语句可以理解为在首条历史SQL语句之后采集到的SQL语句。
实际操作过程中,将首条历史SQL语句存储到第一SQL语句集合中之后,每采集一条新的SQL语句就去判断第一SQL语句集合中是否存在一模一样的一条SQL语句,如果存在就接着采集下一条SQL语句,如果不存在就将其存入到第一SQL语句集合中。
c、根据SQL语句关键词对第一SQL语句集合中的SQL语句进行分类,得到N个历史SQL语句集合。
其中,SQL语句关键词指的是在SQL语句中除了一些中文或英文注释信息之外的关键信息。
在本实施例中,分类不是指根据SQL语句的实际业务功能来进行分类的,而是从SQL语句关键词的角度上出发,来对SQL语句进行分类。
具体的,根据SQL语句关键词对第一SQL语句集合中的SQL语句进行分类,得到N个历史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语句放到其他集合中。
具体的,N个历史SQL语句集合包括:历史SQL操作语句集合、历史SQL定义语句集合、历史SQL控制语句集合、历史SQL嵌入语句集合以及历史SQL剩余语句集合。
例如可以是按照操作语句、定义语句、控制语句、嵌入语句和其他语句将历史SQL语句集合划分为5类:历史SQL操作语句集合、历史SQL定义语句集合、历史SQL控制语句集合、历史SQL嵌入语句集合以及历史SQL剩余语句集合,例如可以分别命名为集合Set1,Set2,Set3,Set4和Set5。
具体的,确定前4类SQL语句集合的SQL语句关键词如表1所示:
表1
相应的,获取N个模型包括:
基于历史SQL操作语句集合和BoW词袋模型生成第一模型。
其中,BoW(Bag of Words)词袋模型最初被用在文本分类中,将文档表示成特征矢量。它的基本思想是假定对于一个文本,忽略其词序和语法、句法,仅仅将其看作是一些词汇的集合,而文本中的每个词汇都是独立的。简单说就是讲每篇文档都看成一个袋子(因为里面装的都是词汇,所以称为词袋,Bag of words即因此而来),然后看这个袋子里装的都是些什么词汇,将其分类。
在本实施例中,第一模型可以理解为对历史SQL操作语句集合使用BoW词袋模型构建的检测模型。例如,可以记录为M_11。
基于历史SQL定义语句集合和BoW词袋模型生成第二模型。
在本实施例中,第二模型可以理解为对历史SQL定义语句集合使用BoW词袋模型构建的检测模型。例如,可以记录为M_12。
基于历史SQL控制语句集合和BoW词袋模型生成第三模型。
在本实施例中,第三模型可以理解为对历史SQL控制语句集合使用BoW词袋模型构建的检测模型。例如,可以记录为M_13。
基于历史SQL嵌入语句集合和BoW词袋模型生成第四模型。
在本实施例中,第四模型可以理解为对历史SQL嵌入语句集合使用BoW词袋模型构建的检测模型。例如,可以记录为M_14。
基于历史SQL剩余语句集合和BoW词袋模型生成第五模型。
在本实施例中,第五模型可以理解为对历史SQL剩余语句集合使用BoW词袋模型构建的检测模型。例如,可以记录为M_15。
以生成第一模型M_11为例,对于Set1中的每一个语句进行如下操作:
1.将Set1中所有的语句进行分词处理;
2.分词后构建语料库;
3.使用语料库将Set1中各个语句使用向量表示,并添加一个索引序号;
4.将向量进行持久化保存为文件形式(如.pkl文件)。
基于历史SQL操作语句集合和TF-IDF模型生成第六模型。
其中,TF-IDF(term frequency-inverse document frequency)模型是一种用于信息检索与数据挖掘的常用加权技术模型。TF-IDF中的TF为词频(Term Frequency),词频是一个词语在文章或句子中出现的次数;IDF为逆文本频率指数(Inverse DocumentFrequency),也就是词的权重。将TF和IDF进行相乘,就得到了一个词的TF-IDF值,该值与该词在文档中出现的次数成正比,与包含该词的文档数成反比。
在本实施例中,第六模型可以理解为对历史SQL操作语句集合使用TF-IDF模型构建的检测模型。例如,可以记录为M_21。
基于历史SQL定义语句集合和TF-IDF模型生成第七模型。
在本实施例中,第七模型可以理解为对历史SQL定义语句集合使用TF-IDF模型构建的检测模型。例如,可以记录为M_22。
基于历史SQL控制语句集合和TF-IDF模型生成第八模型。
在本实施例中,第八模型可以理解为对历史SQL控制语句集合使用TF-IDF模型构建的检测模型。例如,可以记录为M_23。
基于历史SQL嵌入语句集合和TF-IDF模型生成第九模型。
在本实施例中,第九模型可以理解为对历史SQL嵌入语句集合使用TF-IDF模型构建的检测模型。例如,可以记录为M_24。
基于历史SQL剩余语句集合和TF-IDF模型生成第十模型。
在本实施例中,第十模型可以理解为对历史SQL剩余语句集合使用TF-IDF模型构建的检测模型。例如,可以记录为M_25。
以生成第六模型M_21为例,对于Set1中的每一个语句进行如下操作:
1.同上述步骤1一样进行分词的处理(或直接使用上述的分词结果);
2.各自词集的词频并把词频向量化,并添加一个索引序号;
3.将向量进行持久化保存为文件形式(如.pkl文件)。
进一步的,在根据SQL语句关键词对第一SQL语句集合中的SQL语句进行分类,得到N个历史SQL语句集合之前,还包括:
基于正则表达式剔除SQL语句中的注释信息。
其中,正则表达式又称规则表达式,是计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
具体的,注释信息可以是SQL语句中的一些不影响相似度检测的中文或英文注释信息。
和/或;
若构成第一SQL语句集合中SQL语句的目标单词的长度大于长度阈值,则将目标单词转换为目标标识,其中,目标单词非SQL语句关键词,且非数字。
其中,目标单词可以理解为由用户输入待检测SQL语句后,采集到的构成第一SQL语句集合中SQL语句的单词。其中,目标单词非SQL语句关键词,且非数字。
在本实施例中,长度阈值可以是由用户设置的用来判断SQL语句长度是否过长的值。例如长度阈值可以是20,当一个SQL语句的长度值大于20的时候就认为该SQL语句过长。
需要说明的是,目标标识可以理解为将目标单词转换成的具有标识的SQL语句的单词。
进一步的,将目标单词转换为目标标识,包括:
将目标单词进行二进制转换,得到二进制数。
例如,当目标单词的字符长度大于20的时候,可以将其转换为一个16位的二进制数。例如可以是,将目标单词:
TMP_TP01_PRVT_CST_MAGIN_BSC_TENMP转换为二进制数1010000000000000F。转换结果可以从0000000000000001F开始,依次递增。
根据二进制数和预设标识符确定目标标识。
具体的,预设标识符可以是一个由用户预先设置的字母或其他具有标志性作用的符号,例如可以是F。
在实际操作过程中,采用一种二进制数加一个字符(F)的转换方式对长度过长的SQL语句目标单词进行处理。当然也可以使用其他更好的转换方式对SQL语句长度进行精简,精简的原则在于不影响后续相似度的检测。二进制数据的转换可以很大的程度上降低SQL语句的长度,除去冗余信息的SQL语句在很大的程度上可以降低模型的计算时间,在一定程度可以加快相似度语句的查找,提升性能。
S102、根据待检测SQL语句、N个历史SQL语句集合以及2N个模型确定目标SQL语句集合。
其中,目标SQL语句集合可以理解为与待检测SQL语句相似度较高的历史SQL语句集合,包括:历史SQL语句集合中与待检测SQL语句的相似度数值排序前M的第一历史SQL语句,M为大于或者等于3的正整数,下述将M取3为例进行说明。
具体的,第一历史SQL语句指的是在历史SQL语句集合中与待检测SQL语句相似度最高的历史SQL语句。
进一步的,在根据待检测SQL语句、N个历史SQL语句集合以及2N个模型确定目标SQL语句集合之前,还包括:
将历史SQL操作语句集合中的历史SQL语句的数量和第一SQL语句集合中历史SQL语句的数量的比值确定为第一模型的权重和第六模型的权重。
其中,第一模型的权重指的是对历史SQL操作语句集合使用BoW词袋模型构建的检测模型的权重。
其中,第六模型的权重指的是对历史SQL操作语句集合使用TF-IDF模型构建的检测模型的权重。
因为,第一模型和第六模型均为针对历史SQL操作语句建立的模型,所以第一模型和第六模型的权重是相同的,也可以称为历史SQL操作语句集合的权重,例如,可以记为W1。
将历史SQL定义语句集合中的历史SQL语句的数量和第一SQL语句集合中历史SQL语句的数量的比值确定为第二模型的权重和第七模型的权重。
其中,第二模型的权重指的是对历史SQL定义语句集合使用BoW词袋模型构建的检测模型的权重。
其中,第七模型的权重指的是为对历史SQL定义语句集合使用TF-IDF模型构建的检测模型的权重。
因为,第二模型和第七模型均为针对历史SQL定义语句建立的模型,所以第二模型和第七模型的权重是相同的,也可以称为历史SQL定义语句集合的权重,例如,可以记为W2。
将历史SQL控制语句集合中的历史SQL语句的数量和第一SQL语句集合中历史SQL语句的数量的比值确定为第三模型的权重和第八模型的权重。
其中,第三模型的权重指的是对历史SQL控制语句集合使用BoW词袋模型构建的检测模型的权重。
其中,第八模型的权重指的是对历史SQL控制语句集合使用TF-IDF模型构建的检测模型的权重。
因为,第三模型和第八模型均为针对历史SQL控制语句建立的模型,所以第三模型和第八模型的权重是相同的,也可以称为历史SQL控制语句集合的权重,例如,可以记为W3。
将历史SQL嵌入语句集合中的历史SQL语句的数量和第一SQL语句集合中历史SQL语句的数量的比值确定为第四模型的权重和第九模型的权重。
其中,第四模型的权重指的是对历史SQL嵌入语句集合使用BoW词袋模型构建的检测模型的权重。
其中,第九模型的权重指的是对历史SQL嵌入语句集合使用TF-IDF模型构建的检测模型的权重。
因为,第四模型和第九模型均为针对历史SQL嵌入语句建立的模型,所以第四模型和第九模型的权重是相同的,也可以称为历史SQL嵌入语句集合的权重,例如,可以记为W4。
将历史SQL剩余语句集合中的历史SQL语句的数量和第一SQL语句集合中历史SQL语句的数量的比值确定为第五模型的权重和第十模型的权重。
其中,第五模型的权重指的是对历史SQL剩余语句集合使用BoW词袋模型构建的检测模型的权重。
其中,第十模型的权重指的是对历史SQL剩余语句集合使用TF-IDF模型构建的检测模型的权重。
因为,第五模型和第十模型均为针对历史SQL剩余语句建立的模型,所以第五模型和第十模型的权重是相同的,也可以称为历史SQL剩余语句集合的权重,例如,可以记为W5。
在实际操作过程中,假设历史SQL语句集合的数量为NUM,历史SQL操作语句集合Set1中的历史SQL语句的数量为num1,历史SQL定义语句集合Set2中的历史SQL语句的数量为num2,历史SQL控制语句集合Set3中的历史SQL语句的数量为num3,历史SQL嵌入语句集合Set4中的历史SQL语句的数量为num4,历史SQL其他语句集合Set5中的历史SQL语句的数量为num5,则每一个集合的权重Wi为:
Wi=numi/NUM(i=1,2,3,4,5)
集合权重参数Wi的使用,可以防止进行SQL分类时因相同语句随机分配,而造成的相似度值的影响。
进一步的,根据待检测SQL语句、N个历史SQL语句集合以及2N个模型确定目标SQL语句集合,包括:
根据第一模型获取第一集合。
其中,第一集合包括:历史SQL操作语句集合中与待检测SQL语句的相似度数值排序前M的历史SQL语句。
根据第二模型获取第二集合。
其中,第二集合包括:历史SQL定义语句集合中与待检测SQL语句的相似度数值排序前M的历史SQL语句。
根据第三模型获取第三集合。
其中,第三集合包括:历史SQL控制语句集合中与待检测SQL语句的相似度数值排序前M的历史SQL语句。
根据第四模型获取第四集合。
其中,第四集合包括:历史SQL嵌入语句集合中与待检测SQL语句的相似度数值排序前M的历史SQL语句。
根据第五模型获取第五集合。
其中,第五集合包括:历史SQL剩余语句集合中与待检测SQL语句的相似度数值排序前M的历史SQL语句。
根据第六模型获取第六集合。
其中,第六集合包括:历史SQL操作语句集合中与待检测SQL语句的相似度数值排序前M的历史SQL语句。
根据第七模型获取第七集合。
其中,第七集合包括:历史SQL定义语句集合中与待检测SQL语句的相似度数值排序前M的历史SQL语句。
根据第八模型获取第八集合。
其中,第八集合包括:历史SQL控制语句集合中与待检测SQL语句的相似度数值排序前M的历史SQL语句。
根据第九模型获取第九集合。
其中,第九集合包括:历史SQL嵌入语句集合中与待检测SQL语句的相似度数值排序前M的历史SQL语句。
根据第十模型获取第十集合。
其中,第十集合包括:历史SQL剩余语句集合中与待检测SQL语句的相似度数值排序前M的历史SQL语句。
在实际操作过程中,使用模型M_11,M_12,M_13,M_14和M_15分别从集合Set1,Set2,Set3,Set4和Set5计算得出与输入的待检测SQL语句最为相似的前M个语句,并记录语句文本和语句相似度值。
其中,M可以根据业务进行调整,下面以M为3进行举例说明。
计算后分别形成集合:Sim_11,Sim_12,Sim_13,Sim_14和Sim_15。
Sim_11:[语句,相似度值][语句,相似度值][语句,相似度值]
Sim_12:[语句,相似度值][语句,相似度值][语句,相似度值]
Sim_13:[语句,相似度值][语句,相似度值][语句,相似度值]
Sim_14:[语句,相似度值][语句,相似度值][语句,相似度值]
Sim_15:[语句,相似度值][语句,相似度值][语句,相似度值]
同样使用模型M_21,M_22,M_23,M_24和M_25分别从集合Set1,Set2,Set3,Set4和Set5计算得出与输入的待检测SQL语句最为相似的前3个语句,并记录语句文本和语句相似度值,分别形成集合:Sim_21,Sim_22,Sim_23,Sim_24和Sim_25。
Sim_21:[语句,相似度值][语句,相似度值][语句,相似度值]
Sim_22:[语句,相似度值][语句,相似度值][语句,相似度值]
Sim_23:[语句,相似度值][语句,相似度值][语句,相似度值]
Sim_24:[语句,相似度值][语句,相似度值][语句,相似度值]
Sim_25:[语句,相似度值][语句,相似度值][语句,相似度值]
上述集合中得到的相似度的值,都是与对应集合的权重(Wi)进行相应乘积之后的结果。
根据第一集合中历史SQL语句的相似度、第二集合中历史SQL语句的相似度、第三集合中历史SQL语句的相似度、第四集合中历史SQL语句的相似度、第五集合中历史SQL语句的相似度、第六集合中历史SQL语句的相似度、第七集合中历史SQL语句的相似度、第八集合中历史SQL语句的相似度、第九集合中历史SQL语句的相似度和第十集合中历史SQL语句的相似度确定第一权重和第二权重。
在实际操作过程中,对于模型的输出相似度结果可以进行这样的融合操作:
Model_A=W1*M_11+W2*M_12+W3*M_13+W4*M_14+W5*M_15
Model_B=W1*M_21+W2*M_22+W3*M_23+W4*M_24+W5*M_25
Model_R=WA*Model_A+WB*Model_B
其中,Wi为上述步骤中产生的每一个集合的权重Wi。这里的W1*M_11表示经使用词向量M_11与输入语句的相似度计算结果。其中,词向量技术是将词转化成为稠密向量,并且对于相似的词,其对应的词向量也相近。
经过上述的步骤,使用BoW词袋模型得到了15个相似度和相似语句,使用TF-IDF模型也得到相应的结果。统计在同一个集合中如Set_1中得到的10个相似度值,假设如表2所示:
表2
先初始化两个计数变量BoW_sum和TF-IDF_sum的值为0。接着判断上述BoW_sim_Set_11和TF-IDF_sim_Set_11的大小,如果左边大于右边,则BoW_sum加上1,反之右边加上1。之后对其他集合Set_2,Set_3,Set_4和Set_5也进行相应的比数操作。比较之后,得到权重值:
WA=BoW_sum/30
WB=TF-IDF_sum/30
为防止结果出现0的情况,对公式进行如下改写:
WA=(BoW_sum+1)/30
WB=(TF-IDF_sum+1)/30
通过上述步骤,就可以确定出第一权重和第二权重。模型融合的参数WA和WB参数的使用,在一定程度上结合了两种模型的预测结果,防止一种模型由于某一种特殊的情况而出现决定性的作用。
根据第一权重、第二权重、第一模型的权重和第六模型的权重从第一集合和第六集合中选出第一目标SQL语句;
根据第一权重、第二权重、第二模型的权重和第七模型的权重从第二集合和第七集合中选出第二目标SQL语句;
根据第一权重、第二权重、第三模型的权重和第八模型的权重从第三集合和第八集合中选出第三目标SQL语句;
根据第一权重、第二权重、第四模型的权重和第九模型的权重从第四集合和第九集合中选出第四目标SQL语句;
根据第一权重、第二权重、第五模型的权重和第十模型的权重从第五集合和第十集合中选出第五目标SQL语句。
在确定权重之后,确定最后输出的相似度语句。以确定Set_1集合中最为相似度语句为例:
将上述得到的WA和WB权重分别乘以相应的语句相似度,如表3所示:
表3
WA*BoW_sim_Set_11 | WB*TF-IDF_sim_Set_11 |
WA*BoW_sim_Set_12 | WB*TF-IDF_sim_Set_12 |
WA*BoW_sim_Set_13 | WB*TF-IDF_sim_Set_13 |
WA*BoW_sim_Set_14 | WB*TF-IDF_sim_Set_14 |
WA*BoW_sim_Set_15 | WB*TF-IDF_sim_Set_15 |
将表3中的数据进行对应的比较:
当WA*BoW_sim_Set_11>=WB*TF-IDF_sim_Set_11时,取BoW的Set_1语句,反之取TF-IDF的Set_1语句。
进一步的,根据待检测SQL语句、N个历史SQL语句集合以及2N个模型确定目标SQL语句集合,包括:
若待检测SQL语句中第一SQL语句关键词出现的次数大于其他SQL语句关键词出现的次数,则将第一SQL语句关键词对应的第一历史SQL语句集合中与待检测SQL语句的相似度数值排序前M的历史SQL语句确定为目标SQL语句集合。
在实际操作过程中,确定第一历史SQL语句集合后,根据第一历史SQL语句集合和BoW词袋模型生成模型A,再根据第一历史SQL语句集合和TF-IDF模型生成模型B。根据模型A从第一历史SQL语句集合中选取相似度数值排序前M的历史SQL语句,再根据模型B从第一历史SQL语句集合中选取相似度数值排序前M的历史SQL语句。这里,以M取3为例进行说明。在集合A中得到了3个相似度和相似语句,同样的,在集合B中也得到了3个相似度和相似语句。在得到集合A的前3个相似度和相似语句与集合B的前3个相似度和相似语句后获取集合A和集合B的权重WA和WB,获取WA和WB的方式同上述步骤S101中获取WA和WB的方式相同,在此不再赘述。将模型A中3个相似度与权重WA相乘得到3个数值,例如可以是A1、A2和A3,将模型B中3个相似度与权重WB相乘得到3个数值,例如可以是B1、B2和B3。之后将A1和B1进行对比选出相似度最大值对应的SQL语句,将A2和B2进行对比选出相似度最大值对应的SQL语句,将A3和B3进行对比选出相似度最大值对应的SQL语句,最终将选出的这3个SQL语句确定为目标SQL语句集合。
S103、获取目标SQL语句集合中相似度最高的目标SQL语句,并显示目标SQL语句。
其中,目标SQL语句可以是目标SQL语句集合中与待检测SQL语句相似度最高的SQL语句。
进一步的,获取目标SQL语句集合中相似度最高的目标SQL语句,并显示目标SQL语句,包括:
获取每个目标SQL语句集合中相似度最高的目标SQL语句。
判断每个目标SQL语句集合,对于每一个集合取相似度最大的值对应的语句。
依次判断5个集合,30个语句,最终得到相似度最高的5个语句:Sent_1,Sent_2,Sent_3,Sent_4和Sent_5,当然这几个句子与输入句子的相似度是按照从高到低进行排序的。
若任一目标SQL语句的相似度大于相似度阈值,则生成重复提示信息,并显示目标SQL语句和重复提示信息。
其中,相似度阈值可以是由用户设置的一个阈值,用来判断SQL语句相似度的高低。设定一个阈值,例如可以是0.9,当目标SQL语句的相似度值大于0.9的时候就认为重复。
具体的,重复提示信息可以理解为系统在检测到由用户输入的待检测SQL语句与数据库中的历史SQL语句相似度大于相似度阈值后生成的提示信息。
进一步的,在获取目标SQL语句集合中相似度最高的目标SQL语句,并显示目标SQL语句之后,还包括:
若接收到用户输入的存储指令,则将待检测SQL语句存储至数据库。
在本实施例中,存储指令可以是用户输入的将SQL语句存储到数据库中的指令。用户输入待检测SQL语句,在检测完该SQL语句的相似度后,如果该待检测SQL语句不是重复语句,用户输入存储指令,系统接收到指令并将待检测SQL语句存储至数据库。
本实施例的技术方案,通过获取待检测SQL语句,获取N个历史SQL语句集合并进行二进制转换去冗、分类、确定权重、使用BoW词袋模型与TF-IDF模型构建2N个检测模型以及模型融合;根据待检测SQL语句、N个历史SQL语句集合以及2N个模型确定目标SQL语句集合;获取目标SQL语句集合中相似度最高的目标SQL语句,生成重复提示信息并显示目标SQL语句。与现有技术相比,解决了使用深度学习网络来进行学习以构建和训练复杂的模型来进行相似度检测需耗费的大量时间,且模型的计算复杂度高,方法可移植性差的问题,实现了快速且准确的找出相似的SQL语句的效果,保证了数据项建立的唯一性,对于其他脚本语句的相似度检测也具有很大的启示。
实施例二
图2是本发明实施例二提供的一种SQL语句处理装置的结构示意图。本实施例可适用于检测SQL语句相似度的情况,该装置可采用软件和/或硬件的方式实现,该装置可集成在任何提供SQL语句处理的功能的设备中,如图2所示,所述SQL语句处理的装置具体包括:获取模块210、确定模块220和显示模块230。
其中,获取模块210,用于获取待检测SQL语句、N个历史SQL语句集合以及2N个模型,其中,N为大于或者等于2的正整数;
确定模块220,用于根据待检测SQL语句、N个历史SQL语句集合以及2N个模型确定目标SQL语句集合,其中,目标SQL语句集合包括:历史SQL语句集合中与待检测SQL语句的相似度数值排序前M的第一历史SQL语句,M为大于或者等于3的正整数;
显示模块230,用于获取目标SQL语句集合中相似度最高的目标SQL语句,并显示目标SQL语句。
上述产品可执行本发明任意实施例所提供的SQL语句处理方法,具备执行方法相应的功能模块和有益效果。
本发明实施例通过获取待检测SQL语句、N个历史SQL语句集合以及2N个模型;根据待检测SQL语句、N个历史SQL语句集合以及2N个模型确定目标SQL语句集合;获取目标SQL语句集合中相似度最高的目标SQL语句,并显示目标SQL语句。与现有技术相比,解决了使用深度学习网络来进行学习以构建和训练复杂的模型来进行相似度检测需耗费的大量时间,且模型的计算复杂度高,方法可移植性差的问题,实现了快速且准确的找出相似的SQL语句的效果,保证了数据项建立的唯一性,对于其他脚本语句的相似度检测也具有很大的启示。
可选的,获取模块210包括:
第一获取单元,用于获取历史SQL语句。
创建单元,用于根据历史SQL语句创建第一SQL语句集合;
分类单元,用于根据SQL语句关键词对第一SQL语句集合中的SQL语句进行分类,得到N个历史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语句集合为不同的集合。
进一步的,所述N个历史SQL语句集合包括:历史SQL操作语句集合、历史SQL定义语句集合、历史SQL控制语句集合、历史SQL嵌入语句集合以及历史SQL剩余语句集合。
相应的,所述获取N个模型包括:
基于历史SQL操作语句集合和BoW词袋模型生成第一模型;
基于历史SQL定义语句集合和BoW词袋模型生成第二模型;
基于历史SQL控制语句集合和BoW词袋模型生成第三模型;
基于历史SQL嵌入语句集合和BoW词袋模型生成第四模型;
基于历史SQL剩余语句集合和BoW词袋模型生成第五模型;
基于历史SQL操作语句集合和TF-IDF模型生成第六模型;
基于历史SQL定义语句集合和TF-IDF模型生成第七模型;
基于历史SQL控制语句集合和TF-IDF模型生成第八模型;
基于历史SQL嵌入语句集合和TF-IDF模型生成第九模型;
基于历史SQL剩余语句集合和TF-IDF模型生成第十模型。
进一步的,在根据SQL语句关键词对第一SQL语句集合中的SQL语句进行分类,得到N个历史SQL语句集合之前,还包括:
基于正则表达式剔除SQL语句中的注释信息;
和/或;
若构成第一SQL语句集合中SQL语句的目标单词的长度大于长度阈值,则将目标单词转换为目标标识,其中,目标单词非SQL语句关键词,且非数字。
进一步的,将目标单词转换为目标标识,包括:
将目标单词进行二进制转换,得到二进制数;
根据二进制数和预设标识符确定目标标识。
可选的,显示模块230包括:
第二获取单元,用于获取每个目标SQL语句集合中相似度最高的目标SQL语句。
显示单元,用于若任一目标SQL语句的相似度大于相似度阈值,则生成重复提示信息,并显示目标SQL语句和重复提示信息。
进一步的,在根据待检测SQL语句、N个历史SQL语句集合以及2N个模型确定目标SQL语句集合之前,还包括:
将历史SQL操作语句集合中的历史SQL语句的数量和第一SQL语句集合中历史SQL语句的数量的比值确定为第一模型的权重和第六模型的权重;
将历史SQL定义语句集合中的历史SQL语句的数量和第一SQL语句集合中历史SQL语句的数量的比值确定为第二模型的权重和第七模型的权重;
将历史SQL控制语句集合中的历史SQL语句的数量和第一SQL语句集合中历史SQL语句的数量的比值确定为第三模型的权重和第八模型的权重;
将历史SQL嵌入语句集合中的历史SQL语句的数量和第一SQL语句集合中历史SQL语句的数量的比值确定为第四模型的权重和第九模型的权重;
将历史SQL剩余语句集合中的历史SQL语句的数量和第一SQL语句集合中历史SQL语句的数量的比值确定为第五模型的权重和第十模型的权重。
进一步的,根据待检测SQL语句、N个历史SQL语句集合以及2N个模型确定目标SQL语句集合,包括:
根据第一模型获取第一集合,其中,第一集合包括:历史SQL操作语句集合中与待检测SQL语句的相似度数值排序前M的历史SQL语句;
根据第二模型获取第二集合,其中,第二集合包括:历史SQL定义语句集合中与待检测SQL语句的相似度数值排序前M的历史SQL语句;
根据第三模型获取第三集合,其中,第三集合包括:历史SQL控制语句集合中与待检测SQL语句的相似度数值排序前M的历史SQL语句;
根据第四模型获取第四集合,其中,第四集合包括:历史SQL嵌入语句集合中与待检测SQL语句的相似度数值排序前M的历史SQL语句;
根据第五模型获取第五集合,其中,第五集合包括:历史SQL剩余语句集合中与待检测SQL语句的相似度数值排序前M的历史SQL语句;
根据第六模型获取第六集合,其中,第六集合包括:历史SQL操作语句集合中与待检测SQL语句的相似度数值排序前M的历史SQL语句;
根据第七模型获取第七集合,其中,第七集合包括:历史SQL定义语句集合中与待检测SQL语句的相似度数值排序前M的历史SQL语句;
根据第八模型获取第八集合,其中,第八集合包括:历史SQL控制语句集合中与待检测SQL语句的相似度数值排序前M的历史SQL语句;
根据第九模型获取第九集合,其中,第九集合包括:历史SQL嵌入语句集合中与待检测SQL语句的相似度数值排序前M的历史SQL语句;
根据第十模型获取第十集合,其中,第十集合包括:历史SQL剩余语句集合中与待检测SQL语句的相似度数值排序前M的历史SQL语句;
根据第一集合中历史SQL语句的相似度、第二集合中历史SQL语句的相似度、第三集合中历史SQL语句的相似度、第四集合中历史SQL语句的相似度、第五集合中历史SQL语句的相似度、第六集合中历史SQL语句的相似度、第七集合中历史SQL语句的相似度、第八集合中历史SQL语句的相似度、第九集合中历史SQL语句的相似度和第十集合中历史SQL语句的相似度确定第一权重和第二权重;
根据第一权重、第二权重、第一模型的权重和第六模型的权重从第一集合和第六集合中选出第一目标SQL语句;
根据第一权重、第二权重、第二模型的权重和第七模型的权重从第二集合和第七集合中选出第二目标SQL语句;
根据第一权重、第二权重、第三模型的权重和第八模型的权重从第三集合和第八集合中选出第三目标SQL语句;
根据第一权重、第二权重、第四模型的权重和第九模型的权重从第四集合和第九集合中选出第四目标SQL语句;
根据第一权重、第二权重、第五模型的权重和第十模型的权重从第五集合和第十集合中选出第五目标SQL语句。
可选的,确定模块220具体用于:
若待检测SQL语句中第一SQL语句关键词出现的次数大于其他SQL语句关键词出现的次数,则将第一SQL语句关键词对应的第一历史SQL语句集合中与待检测SQL语句的相似度数值排序前M的历史SQL语句确定为目标SQL语句集合。
实施例三
图3是本发明实施例三提供的一种电子设备的结构示意图。图3示出了适于用来实现本发明实施方式的电子设备312的框图。图3显示的电子设备312仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。设备312是典型的轨迹拟合功能的计算设备。
如图3所示,电子设备312以通用计算设备的形式表现。电子设备312的组件可以包括但不限于:一个或者多个处理器316,存储装置328,连接不同系统组件(包括存储装置328和处理器316)的总线318。
总线318表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture,ISA)总线,微通道体系结构(Micro Channel Architecture,MCA)总线,增强型ISA总线、视频电子标准协会(Video Electronics Standards Association,VESA)局域总线以及外围组件互连(Peripheral Component Interconnect,PCI)总线。
电子设备312典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备312访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储装置328可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(Random Access Memory,RAM)330和/或高速缓存存储器332。电子设备312可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统334可以用于读写不可移动的、非易失性磁介质(图3未显示,通常称为“硬盘驱动器”)。尽管图3中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如只读光盘(Compact Disc-Read Only Memory,CD-ROM)、数字视盘(Digital Video Disc-Read Only Memory,DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线318相连。存储装置328可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块326的程序336,可以存储在例如存储装置328中,这样的程序模块326包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块326通常执行本发明所描述的实施例中的功能和/或方法。
电子设备312也可以与一个或多个外部设备314(例如键盘、指向设备、摄像头、显示器324等)通信,还可与一个或者多个使得用户能与该电子设备312交互的设备通信,和/或与使得该电子设备312能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口322进行。并且,电子设备312还可以通过网络适配器320与一个或者多个网络(例如局域网(Local Area Network,LAN),广域网Wide Area Network,WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器320通过总线318与电子设备312的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备312使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、磁盘阵列(Redundant Arrays of Independent Disks,RAID)系统、磁带驱动器以及数据备份存储系统等。
处理器316通过运行存储在存储装置328中的程序,从而执行各种功能应用以及数据处理,例如实现本发明上述实施例所提供的SQL语句处理方法。
实施例四
图4是本发明实施例四提供的一种包含计算机程序的计算机可读存储介质的结构示意图。本发明实施例提供了一种计算机可读存储介质61,其上存储有计算机程序610,该程序被一个或多个处理器执行时实现如本申请所有发明实施例提供的SQL语句处理方法:
获取待检测SQL语句、N个历史SQL语句集合以及2N个模型,其中,N为大于或者等于2的正整数;
根据待检测SQL语句、N个历史SQL语句集合以及2N个模型确定目标SQL语句集合,其中,所述目标SQL语句集合包括:历史SQL语句集合中与所述待检测SQL语句的相似度数值排序前M的第一历史SQL语句,M为大于或者等于3的正整数;
获取目标SQL语句集合中相似度最高的目标SQL语句,并显示所述目标SQL语句。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(Hyper Text TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备或上述内容的任何合适组合。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (15)
1.一种SQL语句处理方法,其特征在于,包括:
获取待检测SQL语句、N个历史SQL语句集合以及2N个模型,其中,N为大于或者等于2的正整数;
根据待检测SQL语句、N个历史SQL语句集合以及2N个模型确定目标SQL语句集合,其中,所述目标SQL语句集合包括:历史SQL语句集合中与所述待检测SQL语句的相似度数值排序前M的第一历史SQL语句,M为大于或者等于3的正整数;
获取目标SQL语句集合中相似度最高的目标SQL语句,并显示所述目标SQL语句。
2.根据权利要求1所述的方法,其特征在于,在获取目标SQL语句集合中相似度最高的目标SQL语句,并显示所述目标SQL语句之后,还包括:
若接收到用户输入的存储指令,则将所述待检测SQL语句存储至数据库。
3.根据权利要求1所述的方法,其特征在于,获取N个历史SQL语句集合包括:
获取历史SQL语句;
根据所述历史SQL语句创建第一SQL语句集合;
根据SQL语句关键词对所述第一SQL语句集合中的SQL语句进行分类,得到N个历史SQL语句集合。
4.根据权利要求3所述的方法,其特征在于,根据所述历史SQL语句创建第一SQL语句集合,包括:
将首条历史SQL语句存储至第一SQL语句集合;
将与所述第一SQL语句集合中的SQL语句不同的非首条历史SQL语句存储至所述第一SQL语句集合。
5.根据权利要求3所述的方法,其特征在于,根据SQL语句关键词对所述第一SQL语句集合中的SQL语句进行分类,得到N个历史SQL语句集合,包括:
若所述第一SQL语句集合中的第一SQL语句中第一SQL语句关键词出现的次数大于其他SQL语句关键词出现的次数,则将所述第一SQL语句添加至所述第一SQL语句关键词对应的第一历史SQL语句集合中;
若所述第一SQL语句集合中的第一SQL语句中第一SQL语句关键词出现的次数等于其他SQL语句关键词出现的次数,则将所述第一SQL语句随机添加至所述第一SQL语句关键词对应的第一历史SQL语句集合或者所述其他SQL语句关键词对应的第二历史SQL语句集合;
若所述第一SQL语句中不存在SQL语句关键词对,则将第一SQL语句添加至第三历史SQL语句集合中,其中,所述第一历史SQL语句集合、第二历史SQL语句集合和第三历史SQL语句集合为不同的集合。
6.根据权利要求1所述的方法,其特征在于,获取目标SQL语句集合中相似度最高的目标SQL语句,并显示所述目标SQL语句,包括:
获取每个目标SQL语句集合中相似度最高的目标SQL语句;
若任一目标SQL语句的相似度大于相似度阈值,则生成重复提示信息,并显示所述目标SQL语句和所述重复提示信息。
7.根据权利要求3所述的方法,其特征在于,在根据SQL语句关键词对所述第一SQL语句集合中的SQL语句进行分类,得到N个历史SQL语句集合之前,还包括:
基于正则表达式剔除所述SQL语句中的注释信息;
和/或;
若构成所述第一SQL语句集合中SQL语句的目标单词的长度大于长度阈值,则将所述目标单词转换为目标标识,其中,所述目标单词非SQL语句关键词,且非数字。
8.根据权利要求7所述的方法,其特征在于,将所述目标单词转换为目标标识,包括:
将所述目标单词进行二进制转换,得到二进制数;
根据所述二进制数和预设标识符确定目标标识。
9.根据权利要求3所述的方法,其特征在于,所述N个历史SQL语句集合包括:历史SQL操作语句集合、历史SQL定义语句集合、历史SQL控制语句集合、历史SQL嵌入语句集合以及历史SQL剩余语句集合。
10.根据权利要求1所述的方法,其特征在于,根据待检测SQL语句、N个历史SQL语句集合以及2N个模型确定目标SQL语句集合,包括:
若所述待检测SQL语句中第一SQL语句关键词出现的次数大于其他SQL语句关键词出现的次数,则将所述第一SQL语句关键词对应的第一历史SQL语句集合中与所述待检测SQL语句的相似度数值排序前M的历史SQL语句确定为目标SQL语句集合。
11.一种SQL语句处理装置,其特征在于,包括:
获取模块,用于获取待检测SQL语句、N个历史SQL语句集合以及2N个模型,其中,N为大于或者等于2的正整数;
确定模块,用于根据待检测SQL语句、N个历史SQL语句集合以及2N个模型确定目标SQL语句集合,其中,所述目标SQL语句集合包括:历史SQL语句集合中与所述待检测SQL语句的相似度数值排序前M的第一历史SQL语句,M为大于或者等于3的正整数;
显示模块,用于获取目标SQL语句集合中相似度最高的目标SQL语句,并显示所述目标SQL语句。
12.根据权利要求11所述的装置,其特征在于,还包括:
存储模块,用于在获取目标SQL语句集合中相似度最高的目标SQL语句,并显示所述目标SQL语句之后,若接收到用户输入的存储指令,则将所述待检测SQL语句存储至数据库。
13.根据权利要求11所述的装置,其特征在于,获取模块包括:
第一获取单元,用于获取历史SQL语句;
创建单元,用于根据所述历史SQL语句创建第一SQL语句集合;
分类单元,用于根据SQL语句关键词对所述第一SQL语句集合中的SQL语句进行分类,得到N个历史SQL语句集合。
14.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述处理器实现如权利要求1-10中任一所述的方法。
15.一种包含计算机程序的计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被一个或多个处理器执行时实现如权利要求1-10中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111256980.8A CN113986950A (zh) | 2021-10-27 | 2021-10-27 | 一种sql语句处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111256980.8A CN113986950A (zh) | 2021-10-27 | 2021-10-27 | 一种sql语句处理方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113986950A true CN113986950A (zh) | 2022-01-28 |
Family
ID=79742691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111256980.8A Pending CN113986950A (zh) | 2021-10-27 | 2021-10-27 | 一种sql语句处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113986950A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579606A (zh) * | 2022-05-05 | 2022-06-03 | 阿里巴巴达摩院(杭州)科技有限公司 | 预训练模型数据处理方法、电子设备及计算机存储介质 |
CN115114374A (zh) * | 2022-06-27 | 2022-09-27 | 腾讯科技(深圳)有限公司 | 事务执行方法、装置、计算设备及存储介质 |
CN117493378A (zh) * | 2024-01-03 | 2024-02-02 | 成都数之联科技股份有限公司 | 一种多数据源切换的方法及系统 |
-
2021
- 2021-10-27 CN CN202111256980.8A patent/CN113986950A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579606A (zh) * | 2022-05-05 | 2022-06-03 | 阿里巴巴达摩院(杭州)科技有限公司 | 预训练模型数据处理方法、电子设备及计算机存储介质 |
CN114579606B (zh) * | 2022-05-05 | 2022-07-29 | 阿里巴巴达摩院(杭州)科技有限公司 | 预训练模型数据处理方法、电子设备及计算机存储介质 |
CN115114374A (zh) * | 2022-06-27 | 2022-09-27 | 腾讯科技(深圳)有限公司 | 事务执行方法、装置、计算设备及存储介质 |
CN115114374B (zh) * | 2022-06-27 | 2023-03-31 | 腾讯科技(深圳)有限公司 | 事务执行方法、装置、计算设备及存储介质 |
CN117493378A (zh) * | 2024-01-03 | 2024-02-02 | 成都数之联科技股份有限公司 | 一种多数据源切换的方法及系统 |
CN117493378B (zh) * | 2024-01-03 | 2024-03-08 | 成都数之联科技股份有限公司 | 一种多数据源切换的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022134759A1 (zh) | 关键词生成方法、装置、电子设备及计算机存储介质 | |
CN111709247B (zh) | 数据集处理方法、装置、电子设备和存储介质 | |
US11106714B2 (en) | Summary generating apparatus, summary generating method and computer program | |
CN111460083A (zh) | 文档标题树的构建方法、装置、电子设备及存储介质 | |
CN113986950A (zh) | 一种sql语句处理方法、装置、设备及存储介质 | |
CN110276023B (zh) | Poi变迁事件发现方法、装置、计算设备和介质 | |
CN113076739A (zh) | 一种实现跨领域的中文文本纠错方法和系统 | |
CN111709243A (zh) | 一种基于深度学习的知识抽取方法与装置 | |
CN107341143B (zh) | 一种句子连贯性判断方法及装置和电子设备 | |
CN110941951B (zh) | 文本相似度计算方法、装置、介质及电子设备 | |
CN110580308A (zh) | 信息审核方法及装置、电子设备、存储介质 | |
US20160188569A1 (en) | Generating a Table of Contents for Unformatted Text | |
US10755028B2 (en) | Analysis method and analysis device | |
CN111753082A (zh) | 基于评论数据的文本分类方法及装置、设备和介质 | |
CN112784009B (zh) | 一种主题词挖掘方法、装置、电子设备及存储介质 | |
CN110210038B (zh) | 核心实体确定方法及其系统、服务器和计算机可读介质 | |
CN114861889A (zh) | 深度学习模型的训练方法、目标对象检测方法和装置 | |
CN110738056B (zh) | 用于生成信息的方法和装置 | |
CN113486178A (zh) | 文本识别模型训练方法、文本识别方法、装置以及介质 | |
CN111723192B (zh) | 代码推荐方法和装置 | |
CN112328655A (zh) | 文本标签挖掘方法、装置、设备及存储介质 | |
US8224642B2 (en) | Automated identification of documents as not belonging to any language | |
CN112417878A (zh) | 实体关系抽取方法、系统、电子设备及存储介质 | |
Sagcan et al. | Toponym recognition in social media for estimating the location of events | |
CN114547301A (zh) | 文档处理、识别模型训练方法、装置、设备及存储介质 |
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 |