CN111857688A - Sql代码自动补全方法、系统及存储介质 - Google Patents
Sql代码自动补全方法、系统及存储介质 Download PDFInfo
- Publication number
- CN111857688A CN111857688A CN202010710805.0A CN202010710805A CN111857688A CN 111857688 A CN111857688 A CN 111857688A CN 202010710805 A CN202010710805 A CN 202010710805A CN 111857688 A CN111857688 A CN 111857688A
- Authority
- CN
- China
- Prior art keywords
- sql
- field
- frequency
- fields
- words
- 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 69
- 238000012163 sequencing technique Methods 0.000 claims abstract description 17
- 238000012216 screening Methods 0.000 claims abstract description 12
- 238000012545 processing Methods 0.000 claims description 28
- 230000011218 segmentation Effects 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 4
- 230000000295 complement effect Effects 0.000 abstract description 2
- 238000005516 engineering process Methods 0.000 abstract description 2
- 238000012423 maintenance Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 13
- 230000008569 process Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及计算机运维,提出一种SQL代码自动补全方法、系统及存储介质,方法包括获取当前输入的SQL字段的输出类型;从历史数据库中筛选出输出类型与当前输入的SQL字段的输出类型符合预设条件的历史SQL字段作为目标字段,并根据设定规则对所述目标字段进行排序形成待选SQL字段组;利用待选SQL字段组进行SQL代码的自动补全。本发明还涉及区块链技术,SQL字段可存储于区块链中。本发明通过SQL代码自动补全方法实现了编码流畅度和编码效率的有效提高。
Description
技术领域
本发明涉及计算机运维,尤其涉及一种SQL代码自动补全方法、系统及存储介质。
背景技术
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
随着大数据时代的到来,编写SQL已经成为数据分析师必不可少的工作之一,而编写SQL工作对数据分析师的SQL熟练程度要求较高,且编写过程繁琐,费时费力。
现有技术中的编辑SQL的工具虽然具有代码提示功能,但是因为不同的数据库产品所支持的SQL语言及SQL标准并不相同,导致目前的编辑SQL的工具的代码提示功能比较薄弱。只有基本的根据输入的字母匹配关键字,例如输入字母“f”,只会提示“from”。
所以,亟需一种具有强大的代码提示功能的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代码自动补全程序,所述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字段历史数据库,然后根据SQL字段历史数据库获得待选SQL字段;提高了待选SQL字段的命中率;
(2)、通过智能的代码片段提示,让用户简单输入几个键,就可以完成输入,有效地提高用户的编码流畅度及编码效率。
附图说明
图1为本发明的SQL代码自动补全的方法较佳实施例的流程图;
图2为本发明的形成待选SQL字段组的方法较佳实施例的流程图;
图3为本发明的SQL代码自动补全系统的较佳实施例的结构示意图;
图4为本发明的电子装置的较佳实施例的结构示意图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了提高用户编码效率,本发明提供一种SQL代码自动补全方法。图1示出了本发明SQL代码自动补全方法较佳实施例的流程。参照图1所示,该方法可以由一个装置执行,该装置可以由软件和/或硬件实现。
需要说明的是,本发明的一种SQL代码自动补全方法,是基于个人输入历史规则的SQL代码自动补全方法,在实际的应用场景中体现为一个web编辑页面。在用户编写代码的过程中,会与服务器进行交互。交互过程中可以实现以下两个功能:
1)为了快速响应后续的输入,在交互过程中把查询结果进行缓存。
2)对用户的执行过的语句进行存储,并根据预先存储的语句实现提示功能。
具体地说,所述SQL代码自动补全方法包括步骤S110-步骤S130。
S110、获取当前输入的SQL字段的输出类型。
获取当前输入的SQL字段,也就是说,获取用户已经输入的单个字母、单词或者表名,进而通过当前输入的SQL字段匹配出个人输入历史中相关的高频字段或者句段。以输入字母“S”为例,则会获取当前输入的SQL字段“S”。需要强调的是,为进一步保证上述SQL字段的私密和安全性,上述SQL字段还可以存储于一区块链的节点中。
其中,这里的历史SQL字段,是用户的执行过的语句,也就是个人输入历史中的语句。对于用户执行过的语句进行实时存储形成了历史SQL字段库。在具体的实施过程中,会选取用户之前执行过的前50条SQL进行解析。
需要说明的是,在所述步骤S110中对所述历史SQL字段进行解析的方法包括:根据待解析的SQL字段及其对应的SQL类型,生成格式统一的带有SQL类型标签的字符数据流;在语法规则库和词法规则库中找出与所述SQL类型标签匹配的语法规则和词法规则;根据所述语法规则和词法规则,生成对应的抽象语法树;将所述抽象语法树转换成与所述待解析的SQL字段对应的输出类型。
其中,根据待解析的SQL字段及其对应的SQL类型,生成格式统一的带有SQL类型标签的字符数据流;这里的统一格式可以由本领域技术人员预先设置,可以设置为:源SQL语句加上SQL类型标签或者SQL类型标签加上原SQL语句。
在一个具体地实施例中,根据SQL类型标签,从预先设置的不同的SQL类型各自对应的词法规则库和语法规则库中查找出与SQL语句的SQL类型标签匹配的语法规则和词法规则;根据查找出的词法规则和语法规则,将字符数据流解析成对应的词法记号流;并根据语法记号流中各语法短语的语法表达式,生成对应的抽象语法树。抽象语法树的形成,是先利用关键信息形成语法节点,然后多个语法节点形成抽象语法树。
具体地说,解析历史SQL字段是通过SQL解析器实现,而SQL解析器可以解析多种类型的SQL,例如Oracle、MySQL、SQL、Server、PostgreSQL.。而SQL类型标签用于指示源SQL语句的SQL类型。
S120、从历史数据库中筛选出输出类型与当前输入的SQL字段的输出类型符合预设条件的历史SQL字段作为目标字段,并根据设定规则对所述目标字段进行排序形成待选SQL字段组,其中,所述预设条件为将语法规则与词法规则与当前输入的SQL字段的语法规则与词法规则相匹配的历史SQL字段作为目标字段。
具体地说,历史数据库就是将用户执行过的语句进行实时存储形成的历史SQL字段库。在具体的实施过程中,会选取用户之前执行过的前50条SQL进行解析。
也就是说,筛选出与当前输入的SQL字段的输出类型相似的历史SQL字段;即,根据SQL类型标签,将语法规则与词法规则与当前输入的SQL字段的语法规则与词法规则相匹配的历史SQL字段作为目标字段。
图2示出了根据本发明的形成待选SQL字段组的方法较佳实施例的流程。参照图2所示,在所述步骤S120中根据设定规则对所述历史SQL字段进行排序形成待选SQL字段组的方法包括:步骤S210-步骤S230。
S210、将所述目标字段进行格式化处理,以得到所述目标字段所包含的SQL词和SQL句段;
在所述步骤S210中将输出类型与当前输入的SQL字段的输出类型相似的历史SQL字段进行格式化处理的方法包括:步骤S310-步骤S330。
S310、将所述目标字段进行合并空格预处理;需要说明的是,
合并空格预处理包括:整个SQL转为大写;把全部SQL语句去掉换行符,合成一行;把所有连续的多个空格合成一个。
S320、将预处理后的所述目标字段进行字符格式化处理;
需要说明的是,字符格式化处理就是利用字符串函数对SQL字段进行格式化处理,处理的内容包括将SQL语句前面、SQL语句尾部的单个空格去掉;
S330、将字符格式化处理后的所述目标字段进行语句去重。具体地说,为了避免重复统计,将对字符格式化处理后的SQL字段进行语句去重。
S220、将格式化处理后的所述目标字段中的SQL词和SQL句段分别进行频次统计,将所述SQL词的频次达到预设阈值的设定为高频SQL词,将所述SQL句段的频次达到预设阈值的设定为高频SQL句段。
在所述步骤S220中将格式化处理后的所述目标字段中的SQL词和SQL句段分别进行频次统计的方法包括:
将格式化处理后的所述目标字段按照预设的分词规则用空格分隔成SQL词,并选择所分隔成的SQL词中频次大于设定阈值的SQL词作为高频SQL词;将格式化处理后的所述目标字段按照窗口分隔规则用空格分隔成多个窗口,并获取每个窗口中SQL词的频次;选择多个窗口中均为高频SQL词的SQL字段作为高频SQL句段。具体地说,将格式化处理后的相似的历史SQL字段按照预设的分词规则用空格分隔成SQL词,并选择频次大于设定阈值的SQL词作为高频SQL词。需要说明的是,分词规则为正向最大匹配法,逆向最大匹配法和双向最大匹配法中的一种,其中,正向最大匹配法较为常用。
这里的设定阈值在具体实施过程中是指重复频次,一般将设定阈值选择为5次。将格式化处理后的相似的历史SQL字段用空格分隔成三个窗口,并对三个窗口中的SQL词分别进行频次统计。选择三个窗口中均为高频SQL词的SQL字段作为高频SQL句段。
在一个具体的实施例中,利用上述方式遍历所有的SQL字段,然后筛选出所有的高频句段。另外,在具体地实施过程中,也可以将SQL字段用空格分隔成四个窗口甚至更多窗口。四个窗口适用于4个单词的高频语句段,只是根据实际需要修改窗口长度即可。
举例说明如下:
用户有很多输入语句:
SELECT*FROM a
SELECT*FROM b WHERE……
SELECT*FROM c
…
那么会统计出来高频词[FROM,WHERE,*,SELECT,…]
然后对语句进行窗口统计:
[SELECT,*,FROM,a]
前三个单词都是高频词,因此SELECT*FROM为高频语句段
下一个窗口:[*,FROM,a]不符合条件,语句结束,结束判断
继续判断下个语句…
S230、将所述高频SQL词以及所述高频SQL句段按照设定规则进行排序形成待选SQL字段组。
需要说明的是,设定规则为将出现次数作为权重,将权重越高的字段,排到越靠前的位置。
例如:policy_no的权重较高,在输入的字母匹配得上的情况下,将权重高的排在第一位,用户输入回车键后则直接补全。
S130、利用待选SQL字段组进行SQL代码的自动补全。
将待选SQL字段组展示在输入光标的下方也就是系统将待选的结果返回给用户,用户通过查看返回的结果,判断其中是否有待输入的内容,如果有,则选择使用。也就是说选择匹配的SQL字段,用户输入回车键可以自动补全。
具体的应用场景举例如下:
1)如果用户输入了一个表名,没有输入库名
SELECT*form my_table_0
则遍历已缓存的所有表名,返回第一个匹配上的库名,自动补全到用户正在编写的语句上
SELECT*from my_database.my_table_0||
2)如果用户输入的表名跟库名不匹配,也同样则遍历已缓存的所有表名,返回第一个匹配上的库名,自动补全到用户正在编写的语句上;
3)根据用户当前输入的光标所在位置,进行提示:
将用户当前正在编写的语句以及光标所在位置,输入到SQL的解析器,判断用户是不是准备输入的是字段名
SELECT||from my_database.my_table_0
4)SQL解析器将判断出用户准备输入的是字段名,先获取该表的所有字段,再解析用户之前执行过的前50条SQL,统计这些SQL中的字段名以及出现次数,把次数作为权重,对权重高的字段,排到提示的前面。
5)如果用户要输入的是库名,或者是表名,也和步骤3)一样,根据用户的执行历史,把可能的库名或者表名进行排序,权重高的排前面。
综上所述,基于个人输入历史及规则的SQL代码自动补全方法,可以基于用户当前输入的SQL语句中的光标所在的位置,判断用户要输入的内容,进行智能的代码提示,这样用户就不必输入繁长的库名,字段名,函数名,关键字等;通过智能的代码片段提示,让用户简单输入几个键,就可以完成输入,有效地提高用户的编码流畅度及编码效率。
图3为本发明的SQL代码自动补全系统的较佳实施例的结构;参照图3所示,
SQL代码自动补全系统300包括SQL字段获取单元310、待选SQL字段组生成单元320和待选SQL字段组展示单元330;其中,
SQL字段获取单元310,用于获取当前输入的SQL字段的输出类型;
待选SQL字段组生成单元320,用于从历史数据库中筛选出输出类型与当前输入的SQL字段的输出类型符合预设条件的历史SQL字段作为目标字段,并根据设定规则对所述目标字段进行排序形成待选SQL字段组,其中,所述预设条件为将语法规则与词法规则与当前输入的SQL字段的语法规则与词法规则相匹配的历史SQL字段作为目标字段;
待选SQL字段组展示单元330,用于利用待选SQL字段组进行SQL代码的自动补全。
在一个具体的实施例中,需要强调的是,为进一步保证上述SQL字段的私密和安全性,上述SQL字段还可以存储于一区块链的节点中。所述待选SQL字段组生成单元320包括格式化处理模块321、高频SQL词以及高频SQL句段获取模块322和待选SQL字段生成模块323;其中,
格式化处理模块,用于所述目标字段进行格式化处理,以得到所述目标字段所包含的SQL词和SQL句段;
高频SQL词以及高频SQL句段获取模块,用于将格式化处理后的所述目标字段中的SQL词和SQL句段分别进行频次统计,将所述SQL词的频次达到预设阈值的设定为高频SQL词,将所述SQL句段的频次达到预设阈值的设定为高频SQL句段;
待选SQL字段生成模块,用于将所述高频SQL词以及所述高频SQL句段按照设定规则进行排序形成待选SQL字段。
本发明提供一种SQL代码自动补全方法,应用于一种电子装置4。
图4示出了根据本发明SQL代码自动补全方法较佳实施例的应用环境。
参照图4所示,在本实施例中,电子装置4可以是服务器、智能手机、平板电脑、便携计算机、桌上型计算机等具有运算功能的终端设备。
该电子装置4包括:处理器42、存储器41、通信总线43及网络接口45。
存储器41包括至少一种类型的可读存储介质。所述至少一种类型的可读存储介质可为如闪存、硬盘、多媒体卡、卡型存储器41等的非易失性存储介质。在一些实施例中,所述可读存储介质可以是所述电子装置4的内部存储单元,例如该电子装置4的硬盘。在另一些实施例中,所述可读存储介质也可以是所述电子装置4的外部存储器41,例如所述电子装置4上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
在本实施例中,所述存储器41的可读存储介质通常用于存储安装于所述电子装置4的SQL代码自动补全程序40等。所述存储器41还可以用于暂时地存储已经输出或者将要输出的数据。
处理器42在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其他数据处理芯片,用于运行存储器41中存储的程序代码或处理数据,例如执行SQL代码自动补全程序40等。
通信总线43用于实现这些组件之间的连接通信。
网络接口44可选地可以包括标准的有线接口、无线接口(如WI-FI接口),通常用于在该电子装置4与其他电子设备之间建立通信连接。
图4仅示出了具有组件41-44的电子装置4,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
可选地,该电子装置4还可以包括用户接口,用户接口可以包括输入单元比如键盘(Keyboard)、语音输入装置比如麦克风(microphone)等具有语音识别功能的设备、语音输出装置比如音响、耳机等,可选地用户接口还可以包括标准的有线接口、无线接口。
可选地,该电子装置4还可以包括显示器,显示器也可以称为显示屏或显示单元。在一些实施例中可以是LED显示器、液晶显示器、触控式液晶显示器以及有机发光二极管(Organic Light-Emitting Diode,OLED)触摸器等。显示器用于显示在电子装置4中处理的信息以及用于显示可视化的用户界面。
可选地,该电子装置4还可以包括射频(Radio Frequency,RF)电路,传感器、音频电路等等,在此不再赘述。
在图4所示的装置实施例中,作为一种计算机存储介质的存储器41中可以包括操作系统、以及SQL代码自动补全程序40;处理器42执行存储器41中存储的SQL代码自动补全程序40时实现如下步骤:
S110、获取当前输入的SQL字段的输出类型;
S120、从历史数据库中筛选出输出类型与当前输入的SQL字段的输出类型符合预设条件的历史SQL字段作为目标字段,并根据设定规则对所述目标字段进行排序形成待选SQL字段组,其中,所述预设条件为将语法规则与词法规则与当前输入的SQL字段的语法规则与词法规则相匹配的历史SQL字段作为目标字段。;
S130、利用待选SQL字段组进行SQL代码的自动补全。
进一步,优选的,根据设定规则对所述目标字段进行排序形成待选SQL字段组的方法包括:
将所述目标字段进行格式化处理,以得到所述目标字段所包含的SQL词和SQL句段;
将格式化处理后的所述目标字段中的SQL词和SQL句段分别进行频次统计,将所述SQL词的频次达到预设阈值的设定为高频SQL词,将所述SQL句段的频次达到预设阈值的设定为高频SQL句段;
将所述高频SQL词以及所述高频SQL句段按照设定规则进行排序形成待选SQL字段组。
在其他实施例中,SQL代码自动补全程序40还可以被分割为一个或者多个模块,一个或者多个模块被存储于存储器41中,并由处理器42执行,以完成本发明。本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段。SQL代码自动补全程序40可以分为包括SQL字段获取单元310、待选SQL字段组生成单元320和待选SQL字段组展示单元330。
此外,本发明还提出一种计算机可读存储介质,主要包括存储数据区和存储程序区,其中,存储数据区可存储根据区块链节点的使用所创建的数据等,存储程序区可存储操作系统、至少一个功能所需的应用程序,所述计算机可读存储介质中包括SQL代码自动补全程序,所述SQL代码自动补全程序被处理器执行时实现如SQL代码自动补全方法的操作。
本发明之计算机可读存储介质的具体实施方式与上述SQL代码自动补全方法、系统、电子装置的具体实施方式大致相同,在此不再赘述。
总的来说,本发明SQL代码自动补全方法、系统、电子装置及计算机可读存储介质通过用户当前输入的SQL语句中的光标所在的位置,判断用户要输入的内容,通过智能的代码片段提示,有效地提高用户的编码流畅度及编码效率。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种SQL代码自动补全方法,应用于电子装置,其特征在于,方法包括:
获取当前输入的SQL字段的输出类型;
从历史数据库中筛选出输出类型与当前输入的SQL字段的输出类型符合预设条件的历史SQL字段作为目标字段,并根据设定规则对所述目标字段进行排序形成待选SQL字段组,其中,所述预设条件为将语法规则与词法规则与当前输入的SQL字段的语法规则与词法规则相匹配的历史SQL字段作为目标字段;
利用所述待选SQL字段组进行SQL代码的自动补全。
2.根据权利要求1所述的SQL代码自动补全方法,其特征在于,根据设定规则对所述目标字段进行排序形成待选SQL字段组的方法包括:
将所述目标字段进行格式化处理,以得到所述目标字段所包含的SQL词和SQL句段;
将格式化处理后的所述目标字段中的SQL词和SQL句段分别进行频次统计,将所述SQL词的频次达到预设阈值的设定为高频SQL词,将所述SQL句段的频次达到预设阈值的设定为高频SQL句段;
将所述高频SQL词以及所述高频SQL句段按照设定规则进行排序形成待选SQL字段组。
3.根据权利要求2所述的SQL代码自动补全方法,其特征在于,将所述目标字段进行格式化处理的方法包括:
将所述目标字段进行合并空格预处理;
将预处理后的所述目标字段进行字符格式化处理;
将字符格式化处理后的所述目标字段进行语句去重。
4.根据权利要求2所述的SQL代码自动补全方法,其特征在于,将格式化处理后的所述目标字段中的SQL词和SQL句段分别进行频次统计的方法包括:
将格式化处理后的所述目标字段按照预设的分词规则用空格分隔成SQL词,并选择所分隔成的SQL词中频次大于设定阈值的SQL词作为高频SQL词;
将格式化处理后的所述目标字段按照窗口分隔规则用空格分隔成多个窗口,并获取每个窗口中SQL词的频次;
选择多个窗口中均为高频SQL词的SQL字段作为高频SQL句段。
5.根据权利要求1所述的SQL代码自动补全方法,其特征在于,在所述筛选出输出类型与当前输入的SQL字段的输出类型符合预设条件的历史SQL字段作为目标字段步骤之前,还包括:
根据历史SQL字段及其对应的SQL类型,生成格式统一的带有所述SQL类型标签的字符数据流;
在预设的语法规则库和词法规则库中找出与所述SQL类型标签匹配的语法规则和词法规则;
根据所述语法规则和词法规则生成抽象语法树;
将所述抽象语法树转换成与所述历史SQL字段对应的输出类型。
6.一种SQL代码自动补全系统,其特征在于,包括SQL字段获取单元、待选SQL字段组生成单元和待选SQL字段组展示单元;其中,
SQL字段获取单元,用于获取当前输入的SQL字段的输出类型;
待选SQL字段组生成单元,用于从历史数据库中筛选出输出类型与当前输入的SQL字段的输出类型符合预设条件的历史SQL字段作为目标字段,并根据设定规则对所述目标字段进行排序形成待选SQL字段组,其中,所述预设条件为将语法规则与词法规则与当前输入的SQL字段的语法规则与词法规则相匹配的历史SQL字段作为目标字段;
待选SQL字段组展示单元,用于利用所述待选SQL字段组进行于SQL代码的自动补全。
7.根据权利要求6所述的SQL代码自动补全系统,其特征在于,
所述待选SQL字段组生成单元包括格式化处理模块、高频SQL词以及高频SQL句段获取模块和待选SQL字段生成模块;其中,
格式化处理模块,用于将所述目标字段进行格式化处理,以得到所述目标字段所包含的SQL词和SQL句段;
高频SQL词以及高频SQL句段获取模块,用于将格式化处理后的所述目标字段中的SQL词和SQL句段分别进行频次统计,将所述SQL词的频次达到预设阈值的设定为高频SQL词,将所述SQL句段的频次达到预设阈值的设定为高频SQL句段;
待选SQL字段生成模块,用于将所述高频SQL词以及所述高频SQL句段按照设定规则进行排序形成待选SQL字段。
8.一种电子装置,其特征在于,该电子装置包括:存储器、处理器,所述存储器中存储有SQL代码自动补全程序,所述SQL代码自动补全程序被所述处理器执行时实现如下步骤:
获取当前输入的SQL字段的输出类型;
从历史数据库中筛选出输出类型与当前输入的SQL字段的输出类型符合预设条件的历史SQL字段作为目标字段,并根据设定规则对所述目标字段进行排序形成待选SQL字段组,其中,所述预设条件为将语法规则与词法规则与当前输入的SQL字段的语法规则与词法规则相匹配的历史SQL字段作为目标字段;
利用所述待选SQL字段组进行SQL代码的自动补全。
9.根据权利要求8所述的电子装置,其特征在于,
根据设定规则对所述目标字段进行排序形成待选SQL字段组的方法包括:
将所述目标字段进行格式化处理,以得到所述目标字段所包含的SQL词和SQL句段;
将格式化处理后的所述目标字段中的SQL词和SQL句段分别进行频次统计,将所述SQL词的频次达到预设阈值的设定为高频SQL词,将所述SQL句段的频次达到预设阈值的设定为高频SQL句段;
将所述高频SQL词以及所述高频SQL句段按照设定规则进行排序形成待选SQL字段组。
10.一种计算机可读存储介质,其特征在于,包括存储数据区和存储程序区,存储数据区存储根据区块链节点的使用所创建的数据,存储程序区存储有计算机程序,所述计算机程序包括SQL代码自动补全程序,所述SQL代码自动补全程序被处理器执行时,实现如权利要求1至5中任一项所述的SQL代码自动补全方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010710805.0A CN111857688A (zh) | 2020-07-22 | 2020-07-22 | Sql代码自动补全方法、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010710805.0A CN111857688A (zh) | 2020-07-22 | 2020-07-22 | Sql代码自动补全方法、系统及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111857688A true CN111857688A (zh) | 2020-10-30 |
Family
ID=73002290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010710805.0A Pending CN111857688A (zh) | 2020-07-22 | 2020-07-22 | Sql代码自动补全方法、系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111857688A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114647408A (zh) * | 2022-04-02 | 2022-06-21 | 北京白海科技有限公司 | 一种代码的补全方法、装置、电子设备及存储介质 |
CN114676155A (zh) * | 2022-03-28 | 2022-06-28 | 阿里云计算有限公司 | 代码提示信息的确定方法、数据集的确定方法及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105975489A (zh) * | 2016-04-26 | 2016-09-28 | 中国电子科技网络信息安全有限公司 | 一种基于元数据的在线sql代码补全方法 |
WO2017088702A1 (zh) * | 2015-11-27 | 2017-06-01 | 阿里巴巴集团控股有限公司 | 数据库编辑器的编辑方法和装置 |
WO2018201280A1 (en) * | 2017-05-02 | 2018-11-08 | Alibaba Group Holding Limited | Method and apparatus for query auto-completion |
CN109597824A (zh) * | 2018-11-27 | 2019-04-09 | 上海炬宏信息技术有限公司 | Sql语句高效编写方法 |
CN110673836A (zh) * | 2019-08-22 | 2020-01-10 | 阿里巴巴集团控股有限公司 | 一种代码补全方法、装置、计算设备及存储介质 |
CN110968601A (zh) * | 2019-11-28 | 2020-04-07 | 中国银行股份有限公司 | 一种数据查询处理方法及装置 |
-
2020
- 2020-07-22 CN CN202010710805.0A patent/CN111857688A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017088702A1 (zh) * | 2015-11-27 | 2017-06-01 | 阿里巴巴集团控股有限公司 | 数据库编辑器的编辑方法和装置 |
CN105975489A (zh) * | 2016-04-26 | 2016-09-28 | 中国电子科技网络信息安全有限公司 | 一种基于元数据的在线sql代码补全方法 |
WO2018201280A1 (en) * | 2017-05-02 | 2018-11-08 | Alibaba Group Holding Limited | Method and apparatus for query auto-completion |
CN109597824A (zh) * | 2018-11-27 | 2019-04-09 | 上海炬宏信息技术有限公司 | Sql语句高效编写方法 |
CN110673836A (zh) * | 2019-08-22 | 2020-01-10 | 阿里巴巴集团控股有限公司 | 一种代码补全方法、装置、计算设备及存储介质 |
CN110968601A (zh) * | 2019-11-28 | 2020-04-07 | 中国银行股份有限公司 | 一种数据查询处理方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114676155A (zh) * | 2022-03-28 | 2022-06-28 | 阿里云计算有限公司 | 代码提示信息的确定方法、数据集的确定方法及电子设备 |
CN114647408A (zh) * | 2022-04-02 | 2022-06-21 | 北京白海科技有限公司 | 一种代码的补全方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104850554B (zh) | 一种搜索方法和系统 | |
WO2019227585A1 (zh) | 基于索引的简历数据处理方法、装置、设备及存储介质 | |
US8996524B2 (en) | Automatically mining patterns for rule based data standardization systems | |
US20190034399A1 (en) | Systems and methods for automatically creating tables using auto-generated templates | |
CN111177184A (zh) | 基于自然语言的结构化查询语言转换方法、及其相关设备 | |
CN110019291A (zh) | 一种sql解析方法和sql解析器 | |
CN111475525A (zh) | 基于结构化查询语言的脱敏方法、及其相关设备 | |
CN110597844B (zh) | 异构数据库数据统一访问方法及相关设备 | |
CN111814465A (zh) | 基于机器学习的信息抽取方法、装置、计算机设备及介质 | |
CN108932218B (zh) | 一种实例扩展方法、装置、设备和介质 | |
CN115576984A (zh) | 中文自然语言生成sql语句及跨数据库查询方法 | |
CN113760891B (zh) | 一种数据表的生成方法、装置、设备和存储介质 | |
CN111160007B (zh) | 基于bert语言模型的搜索方法、装置、计算机设备及存储介质 | |
CN114722137A (zh) | 基于敏感数据识别的安全策略配置方法、装置及电子设备 | |
CN112860727A (zh) | 基于大数据查询引擎的数据查询方法、装置、设备及介质 | |
CN111553556A (zh) | 业务数据分析方法、装置、计算机设备及存储介质 | |
WO2022100067A1 (zh) | 数据库数据查询方法、装置、电子设备及存储介质 | |
CN111857688A (zh) | Sql代码自动补全方法、系统及存储介质 | |
CN110413307B (zh) | 代码功能的关联方法、装置及电子设备 | |
CN112328621A (zh) | Sql转换方法、装置、计算机设备及计算机可读存储介质 | |
CN112417875B (zh) | 配置信息的更新方法、装置、计算机设备及介质 | |
CN114842982B (zh) | 一种面向医疗信息系统的知识表达方法、装置及系统 | |
CN111309773A (zh) | 一种车辆信息的查询方法、装置、系统及存储介质 | |
CN114666078B (zh) | Sql注入攻击的检测方法及系统、电子设备及存储介质 | |
CN114881001A (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 |