CN113886420A - Sql语句的生成方法、装置、电子设备及存储介质 - Google Patents
Sql语句的生成方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113886420A CN113886420A CN202111155572.3A CN202111155572A CN113886420A CN 113886420 A CN113886420 A CN 113886420A CN 202111155572 A CN202111155572 A CN 202111155572A CN 113886420 A CN113886420 A CN 113886420A
- Authority
- CN
- China
- Prior art keywords
- sql
- data table
- segment
- information
- clause
- 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/243—Natural language query formulation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的SQL语句的生成方法、装置、电子设备及存储介质,获取中文查询语句的查询语句初始序列;获取所述查询语句初始序列的编码信息序列;根据所述编码信息序列提取所述查询语句初始序列中的数据表描述片段、主关联片段以及主关联条件片段,依次逐级提取每个所述数据表描述片段中的下一级的数据表描述片段、操作片段和条件片段,直至所述数据表描述片段中仅包括数据表信息;从最后一级开始逐级拼接初始SQL语句,根据初始SQL语句获取对应字段信息,再根据初始SQL语句和字段信息获取SQL语句;业务人员只需根据初步的操作逻辑编写中文查询语句,就能实现大数据量的多表关联的复杂SQL语句的生成,缩短了执行周期,提高了效率。
Description
【技术领域】
本发明涉及数据处理技术领域,尤其涉及一种SQL语句的生成方法、装置、电子设备及存储介质。
【背景技术】
在互联网技术领域,数据库中存储的数据越来越多,对于大数据量的查询和汇总聚合成为一项重要工作。现有技术中,大多利用SQL(Structured Query Language,结构化查询语言)语言与数据库进行交互以查询所需数据,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语句。
可选地,所述逻辑信息包括左括号和右括号;
所述确定所述编码信息序列中各逻辑信息的层次位置,包括:
对所述编码信息序列进行扫描;
当扫描到左括号时,当前计数加一,将当前计数作为该左括号的层次编码,其中,当前计数的初始值为0;
当扫描到右括号时,当前计数减一,将距离当前右括号最近的已扫描且未配对左括号与当前右括号进行配对;
直至遍历所述编码信息序列中每个编码信息,根据各逻辑信息的层次编码和配对关系得到各逻辑信息的层次位置。
可选地,所述接收待转换的中文查询语句之前,还包括:
接收用户输入的查询指令,展示查询输入界面;
接收用户在所述查询输入界面上录入的查询信息,根据所述查询信息生成所述中文查询语句。
本发明的另一技术方案如下:提供一种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为本发明第三实施例的电子设备的结构示意图;
图4为本发明第四实施例的存储介质的结构示意图。
【具体实施方式】
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
在本发明中,下述的表a、表b、表c为存储在数据库中的数据表,这些数据表通常来源于提供查询的数据库内已经经过数据建模产生的结果。
表a涉及字段:
表b涉及字段:
表c涉及字段:
在本发明中,业务人员基于业务需求以及简单的业务逻辑编辑中文查询语句,一般以提供查询的数据库中数据表为起点,进行多次关联操作和/或过滤操作。
关联操作:完成两个数据表之间的关联;
过滤操作:对数据表内信息进行过滤;
关联条件:为每个关联操作配置的操作条件;
过滤条件:为每个过滤操作配置的操作条件。
图1是本发明第一实施例的SQL语句的生成方法的流程示意图。需注意的是,若有实质上相同的结果,本发明的方法并不以图1所示的流程顺序为限。如图1所示,该SQL语句的生成方法主要包括以下步骤S101~S108:
S101,接收待转换的中文查询语句,对所述中文查询语句依次进行特殊符号识别及分词处理,得到所述中文查询语句的查询语句初始序列。
其中,在获取分词序列时,首先对所述中文查询语句进行特殊符号识别处理,本实施例中特殊符号包括标点符号和数学运算符号,标点符号例如小括号和中括号可能与中文查询语句的逻辑层次相关;数学运算符号可能与查询语句的执行过程或执行条件相关,例如,“=”可能与查询条件或过滤条件相关。对识别出的特殊符号进行编码,具体地,可以按照ASCII码表中符号与二进制向量的映射关系对识别出的各特殊符号进行编码,得到对应的特殊符号向量表示。
其中,对中文查询语句进行特殊符号识别后,使用深度学习分词器进行分词处理,具体地,可以利用jieba分词,pkuseg分词或thulac分词等分词工具,进行词语级别的编码,得到每个分词的初始的词向量表示。中文查询语句中除特殊符号外的部分包括中文词语、英文符号和数字符号,英文符号和数字符号可能与数据表的名称、数据表标识或字段的名称相关,需要与中文词语共同进行分词处理,例如,“表a”、“表1”、“C平台订单号”均分别作为一个分词。
中文查询语句中各特殊符号的符号向量表示和各分词的词向量表示按照排列顺序形成对应的查询语句初始序列,具体地,查询语句初始序列包括特殊符号向量和分词向量。
S102,获取所述查询语句初始序列的编码信息序列,其中,所述编码信息序列包括编码信息位置以及编码信息类型。
其中,在本实施例的应用场景中,面向的用户为业务人员,缺乏数据库专业知识,无法编辑标准的SQL语句。在本实施例中,编码信息为涉及SQL语句编码的关键信息,编码信息类型包括数据表信息、关联操作信息、过滤操作信息、条件信息以及逻辑信息,其中,数据表信息指向关联查询的数据表,数据表信息可以为数据表名称或数据表标识;关联操作信息指向代表关联的关键字,包括左关联、右关联、内联、联合、去重联合等;过滤操作信息指向代表过滤的关键字,包括“过滤”,“删除”,“去除”,“不显示”等;条件信息指向操作条件的关键字,条件信息包括等于、不等于、不为空、为空,和,或,且,=等;逻辑信息指向逻辑层次,逻辑信息主要包括“(”(左小括号),“)”(右小括号),即逻辑信息包括左括号和右括号。
例如,业务人员输入的中文查询语句为:查询((表a过滤用户类型等于投资用户)左关联(表b去重联合表c过滤C平台订单号不为空的)关联条件表a.平台商户号=表b.平台商户号和表a.购买时间=表b.充值时间)。在编码信息序列中,将查询语句初始序列中“左关联”,“去重联合”对应的词向量标注为关联操作信息,将两处“过滤”对应的词向量标注为过滤操作信息;将“表a”、“表b”、“表c”对应的词向量均标注为数据表信息;将“等于”,“不为空的”,“=”,“和”,“=”,“不为空的”对应的词向量标注为条件信息;将“(”,“)”对应的特殊符号向量标注为逻辑信息。
具体地,编码信息序列是通过对所述查询语句初始序列进行编码信息类型标注而获取的,即为该查询语句初始序列标注的结果,编码信息序列可以包含编码信息类型和该编码信息类型对应的编码信息位置;所述编码信息位置,用于表示构成所述编码信息序列的向量符号在所述查询语句初始序列中的具体位置;所述编码信息类型,用于表示所述编码信息序列中各元素的具体类型。进行序列标注的方法包括但可以采用任意现有的序列标注方式,例如,可以采用BIEO标注方式(即,采用Begin,Intermediate,End,Other标注)。假定所得具体的编码信息类型有m种,可以将各具体实体类型记为C1,C2,C3,……,Cm-1,Cm,例如,C1为数据表信息,C2为关联操作信息,C3为过滤操作信息。给定一个符号长度为n的查询语句初始序列的对应符号序列W={w1,w2,w3,……,wn-1,wn},该查询语句初始序列W中若干个连续的符号可以组成序列S=[wk-i,wk-i+1,……,wk]。序列S即为编码信息序列中的一个元素,如果序列S是属于Cj编码信息类型,那么可以进行如下标注:将wk-i标记为Cj_B,将wk-i+1至wk-1标记为Cj_I,将wk标记为Cj_E。其中,B即Begin,用于标识对应元素的开始符号;E即End,用于标识对应元素的结束符号;I即Intermediate,用于标识对应元素的中间符号。
在一个可选的实施方式中,步骤S102具体包括如下步骤:
S201,将所述查询语句初始序列在预设的编码信息映射表中进行匹配查询,其中,所述编码信息映射表用于记录关键词向量与所述编码信息类型的关联关系。
其中,编码信息映射表中关键词向量为预先存储的,例如关键词可以包括“过滤”、“联合”、“去重联合”、“左关联”、“left jion”、“等于”、“=”、“表”、“)”等,按照预设的编码信息类型为每个关键词向量关联一个编码信息类型,编码信息类型参见上述。在进行匹配查询时,查询语句初始序列中各序列向量为分词向量或特殊符号向量,将查询语句初始序列中每个序列向量与编码信息映射表中关键词向量进行匹配,生成每个序列向量与每个关键词的匹配值,匹配值可以为序列向量与关键词向量的相似度,当匹配值大于预设阈值时,匹配成功,若有多个关键词向量匹配成功,选择匹配值最高的作为最终匹配结果。
表1编码信息映射表示例
S202,根据所述关联关系生成查询结果,根据所述查询结果对所述查询语句初始序列进行标注,得到所述编码信息序列。
其中,当序列向量与关键词向量匹配成功时,获取与该关键词向量具有关联关系的编码信息类型,对序列向量进行标注,标注方式参见上述。
S103,根据所述编码信息序列提取所述查询语句初始序列中的数据表描述片段、主关联片段以及主关联条件片段,依次逐级提取每个所述数据表描述片段中的下一级的数据表描述片段、操作片段和条件片段,直至所述数据表描述片段中仅包括数据表信息。
其中,每个数据表描述片段指向的结果为一个中间数据表,该中间数据表可能通过对数据库中存储的各数据表进行关联后得到,该中间数据表也可能通过对数据库中存储的一个数据表进行过滤后得到,该中间数据表也可能通过对数据库中存储的两个数据表分别进行过滤处理后再关联得到,该中间数据表也可能通过将其他中间数据表进行关联得到,因此,数据表描述片段一定包括数据表信息,数据表描述片段也可能包括操作信息(过滤或关联)以及条件信息,若不包括,则操作片段或条件片段为空。
具体地,在上述举例中,“(表a过滤用户类型等于投资用户)”在查询语句初始序列中对应的片段为最高一级的数据表描述片段,“左关联”在查询语句初始序列中对应的片段为主关联片段,“(表b去重联合表c过滤C平台订单号不为空的)”在查询语句初始序列中对应的片段为最高一级的数据表描述片段,“关联条件表a.平台商户号=表b.平台商户号和表a.购买时间=表b.充值时间”在查询语句初始序列中对应的片段为主关联条件片段。针对“(表a过滤用户类型等于投资用户)”进行下一级片段划分,由于“表a”仅包括数据表信息,因此,“表a”在查询语句初始序列中对应的片段为最后一级的数据表描述片段,“过滤”在查询语句初始序列中对应的片段为最后一级的操作片段,“用户类型等于投资用户”在查询语句初始序列中对应的最后一级的片段条件片段;针对“(表b去重联合表c过滤C平台订单号不为空的)”,“表b去重联合表c”在查询语句初始序列中对应的片段为下一级的数据表描述片段,“过滤”在查询语句初始序列中对应的片段为下一级的操作片段,“C平台订单号不为空的”在查询语句初始序列中对应的片段为下一级的条件片段,其中,在“表b去重联合表c”中进一步包括“去重联合”这个最后一级的操作片段以及“表b”和“表c”这两个最后一级的数据表描述片段,“表b”和“表c”这两个数据表描述片段仅仅包括数据表信息,为最后一级。
在一个可选的实施方式中,步骤S103中所述根据所述编码信息序列提取所述查询语句初始序列中的数据表描述片段、主关联片段以及主关联条件片段,包括:
S301,确定所述编码信息序列中各逻辑信息的层次位置。
其中,逻辑信息包括左括号和右括号,对所述编码信息序列进行扫描,当扫描到左括号时,当前计数加一,将当前计数作为该左括号的层次编码,其中,当前计数的初始值为0;当扫描到右括号时,当前计数减一,将距离当前右括号最近的已扫描且未配对左括号与当前右括号进行配对;直至遍历所述编码信息序列中每个编码信息,根据各逻辑信息的层次编码和配对关系得到各逻辑信息的层次位置。
S302,根据所述层次位置提取所述数据表描述片段。
其中,按照本实施例的业务逻辑,一般数据表描述片段为两个,主关联片段为一个,关联条件片段为一个。
在获取数据表描述片段时,获取层次编码为第一层的左括号和对应的右括号组成的括号;若括号外存在关联操作信息,则获取层次编码为第一层的括号的数量;若所述数量大于或等于二,则将每个括号内的内容作为数据表描述片段;若所述数量为一,则将括号内的内容作为数据表描述片段,将括号外且位于距离左括号最近的数据表信息或括号外且距离右括号最近的数据表信息作为数据表描述片段;若层次编码为第一层的左括号的数量为一且括号外不存在关联操作信息或过滤操作信息,则获取层次编码为第二层的左括号和对应的右括号组成的括号;若括号外存在关联操作信息,则获取层次编码为第二层的括号的数量;若所述数量等于二,则将每个括号内的内容作为数据表描述片段;若所述数量为一,则将括号内的内容作为数据表描述片段,将括号外且位于距离左括号最近的数据表信息或括号外且距离右括号最近的数据表信息作为数据表描述片段;若层次编码为第二层的左括号的数量为一且括号外不存在关联操作信息或过滤操作信息,则获取层次编码为第三层的左括号和对应的右括号组成的括号,重复上述步骤,直至括号外存在关联操作信息。
S303,将两个所述数据表描述片段之间的关联操作信息作为主关联片段。
其中,两个数据表描述片段之间的信息为主关联片段。
S304,从所述查询语句初始序列的剩余片段中提取主关联条件片段。
另外,每一个数据表描述片段均可以采用步骤S301~步骤S304的类似方式进行下一级的片段划分。
需要说明的是,所述查询语句初始序列中可能还包括主过滤片段和主过滤条件片段,对主关联之后得到的最终数据表进行过滤,由于主过滤片段和主过滤条件片段相对容易识别及编辑,可以在主关联操作的SQL语句的基础上继续添加,在后续步骤中再进行说明。
其中,确定了数据表描述片段和主关联片段之后,提取主关联条件片段,具体地,步骤S304包括:
S401,从所述查询语句初始序列提取主过滤片段和主过滤条件片段;
其中,从所述查询语句初始序列的剩余片段中提取过滤操作信息,该过滤操作信息即为主过滤片段,该主过滤片段之后的所有片段均为主过滤条件片段,例如,上述例子为:查询((表a过滤用户类型等于投资用户)左关联(表b去重联合表c过滤C平台订单号不为空的)关联条件表a.平台商户号=b.平台商户号和表a.购买时间=b.充值时间)过滤关联表.用户名是不空的。其中,“过滤关联表.”为主过滤片段,“用户名是不空的”为主过滤条件片段。
S402,若主过滤片段及主过滤条件片段提取成功,则提取靠近所述主过滤片段的数据表描述片段与所述主过滤片段之间的信息作为主关联条件片段;
其中,如果不存在主过滤信息,更靠近所述查询语句初始序列末端的数据表描述片段与所述主过滤片段之间的信息为主关联条件片段。
S403,若主过滤片段及主过滤条件片段提取失败,则将所述查询语句初始序列的剩余片段作为所述主关联条件片段;
其中,如果不存在主过滤信息,则剩余的位于查询语句初始序列末尾的片段均为主关联条件片段。
S104,获取最后一级的数据表描述片段中的数据表信息,根据所述数据表信息获取对应字段信息。
其中,最后一级的数据表描述片段仅包括一个数据表信息,根据所述数据表信息获取对应的数据表,获取所述数据表的各字段,根据数据表信息以及获取的各字段信息进行标准SQL转换,直接得到SQL数据表描述子句。例如,“表a”(最后一级数据表描述片段)、“过滤”(最后一级操作片段)、“用户类型等于投资用户”(最后一级条件片段)分别进行标准SQL转换,针对“表a”,获取表a对应的数据表的相关字段:平台商户号,用户名称,用户证件号,用户类型,用户购买金额,购买时间。
S105,根据所述数据表信息的字段信息将所述最后一级的数据表描述片段转换为对应的SQL数据表描述子句,将所述SQL数据表描述子句、最后一级的操作片段的对应SQL操作子句以及最后一级的条件片段对应的SQL条件子句进行拼接,得到上一级的数据表描述片段的初步SQL描述子句。
其中,将“表a”转换为“select平台商户号,用户名称,用户证件号,用户类型,用户购买金额,购买时间from表a”,即为SQL数据表描述子句;将“过滤”转换为“where”,即为SQL操作子句;将“用户类型等于投资用户”转换为“用户类型=投资用户”,即为SQL条件子句,再将上述SQL数据表描述子句、SQL操作子句、SQL条件子句进行拼接得到上一级的数据表描述片段的初步SQL描述子句,上一级的数据表描述片段即为“表a过滤用户类型等于投资用户”,其初步SQL描述子句如下:select平台商户号,用户名称,用户证件号,用户类型,用户购买金额,购买时间from表a where用户类型=投资用户。
第一级数据表描述片段“表b去重联合表c过滤C平台订单号不为空的”;第二级片段“表b去重联合表c”,“过滤”,“C平台订单号不为空的”;第三级片段“表b”、“去重联合”、“表c”,第三级片段为最后一级。于是针对“表b”转换为“select B平台订单号,平台商户号,用户名称,用户证件号,充值金额,充值时间from表b”,将“表c”转换为“select c平台订单号,平台商户号,用户名称,用户证件号,充值金额,充值时间from表c”,“去重联合”转换为“union”,于是第二级片段“表b去重联合表c”对应的初步SQL描述子句为(select B平台订单号,平台商户号,用户名称,用户证件号,充值金额,充值时间from表b union select c平台订单号,平台商户号,用户名称,用户证件号,充值金额,充值时间from表c)。
S106,根据当前一级的数据表描述片段的初步SQL描述子句获取对应的字段信息,根据所述初步SQL描述子句以及获取的所述字段信息将所述当前一级的数据表描述片段转换为对应的SQL数据表描述子句。
其中,以上述第二级片段为例进行说明,初步SQL描述子句为“select B平台订单号,平台商户号,用户名称,用户证件号,充值金额,充值时间from表b union select c平台订单号,平台商户号,用户名称,用户证件号,充值金额,充值时间from表c”,获取该初步SQL描述子句的对应字段信息,该字段信息为“平台订单号,平台商户号,用户名称,用户证件号,充值金额,充值时间”,根据所述初步SQL描述子句以及获取的所述字段信息转换得到的SQL数据表描述子句为“select平台订单号,平台商户号,用户名称,用户证件号,充值金额,充值时间from(select B平台订单号,平台商户号,用户名称,用户证件号,充值金额,充值时间from表b union select c平台订单号,平台商户号,用户名称,用户证件号,充值金额,充值时间from表c)”。根据初步SQL描述子句获取对应的字段信息的方式为将“初步SQL描述子句”输入至数据库中进行查询,得到一张查询结果表,该查询结果表中的字段信息即为初步SQL描述子句对应的字段信息。
S107,将当前一级的数据表描述片段对应的所述SQL数据表描述子句、当前一级的操作片段的对应SQL操作子句以及当前一级的条件片段对应的SQL条件子句进行拼接,得到上一级的数据表描述片段的初步SQL描述子句。
在本实施例中,操作子片段和条件子片段均可以直接进行转换成标准的SQL子句,数据表描述子片段需要获取对应字段信息后再与初步SQL描述子句共同生成SQL描述子句,该初步SQL描述子句是下一级的三个标准SQL子句拼接形成的。
具体地,将第二级子片段中“过滤”转换为“where”,“C平台订单号不为空的”转换为“C平台订单号is not null”。再将第二级三个子片段进行拼接得到第一级数据表描述片段“表b去重联合表c过滤C平台订单号不为空的”对应的初步SQL描述子句“select平台订单号,平台商户号,用户名称,用户证件号,充值金额,充值时间from(select B平台订单号,平台商户号,用户名称,用户证件号,充值金额,充值时间from表b union select c平台订单号,平台商户号,用户名称,用户证件号,充值金额,充值时间from表c)where平台订单号isnot null”。
S108,重复上述步骤,直至得到最高一级的数据表描述片段的SQL描述子句,将所述SQL描述子句、所述主关联片段对应的SQL主关联子句以及所述主关联条件片段对应的SQL主关联条件子句拼接形成所述中文查询语句的SQL语句。
按照步骤S106和步骤S107依次对上一级的数据表描述子片段进行转换,直至得到数据表描述片段的初步SQL描述子句,根据数据表描述片段的初步SQL描述子句获取对应的字段信息,得到数据表描述片段的SQL描述子句,再与主关联片段的SOL操作子句以及主关联条件片段的SQL条件子句进行拼接得到所述中文查询语句的初步SQL语句,再根据所述初步SQL语句获取对应的字段信息,根据初步SQL语句和获取的字段信息形成所述中文查询语句的SQL语句。
在一个可选的实施方式中,在步骤S401至步骤S403的基础上,步骤S108之后还包括如下步骤:
S501,获取所述主过滤片段对应的SQL过滤操作子句以及所述主过滤条件片段对应的SQL过滤条件子句;
S502,将所述SQL语句、SQL过滤操作子句以及SQL过滤条件子句拼接形成最终SQL语句。
在一个可选的实施方式中,可以设置查询输入界面,引导业务人员输入各项信息,在步骤S101之前,还包括中文查询语句的生成步骤:
S601,接收用户输入的查询指令,展示查询输入界面。
其中,查询输入界面包括关联类型输入栏、待关联数据表信息输入栏以及关联条件输入栏,待关联数据表信息输入栏进一步包括数据表标识输入栏和数据表处理方式输入栏,其中,待关联数据表信息输入栏设置有至少两个,每个待关联数据表信息输入栏中数据表标识输入栏和数据表处理方式输入栏分别设置有至少一个。
具体地,业务人员可以在查询输入界面上录入相关的信息,包括关联类型信息、待关联数据表信息和关联条件信息,待关联数据表信息包括数据表标识和数据表处理信息。
S602,接收用户在所述查询输入界面上录入的查询信息,根据所述查询信息生成所述中文查询语句。
其中,当用户在查询输入界面上完成录入之后触发一个数据输入指令,在接收到该数据输入指令之后,获取录入的查询信息。所述查询信息包括关联类型信息、待关联数据表信息和关联条件信息,所述待关联数据表信息包括数据表标识和数据表处理信息;接收到该查询信息之后,按照预设的生成规则生成中文查询语句,预设的生成规则包括查询信息的组装顺序为第一待关联数据表信息、关联类型信息、第二待关联数据表信息以及关联条件信息。具体地,第一待关联数据表信息、关联类型信息、第二待关联数据表信息以及关联条件信息依次对应第一数据表描述片段、主关联片段、第二数据表描述片段和主关联条件片段。
进一步地,在第一待关联数据表信息项目中,可以进一步细分为数据表信息子项目、操作信息子项目、操作条件子项目,表示该第一待关联数据表信息是通过两个数据表的关联操作获取的或者通过对一个数据表的过滤获取的。相应地,数据表信息子项目也可以进一步细分为下一级的数据表信息子项目、操作信息子项目、操作条件子项目。
在一个可选的实施方式中,将当前一级的数据表描述片段转换为对应的SQL数据表描述子句、将当前一级的操作片段转换为对应的SQL操作子句、以及将当前一级的条件片段转换为对应的SQL条件子句的过程中,根据预设的关键词与标准SQL映射表进行转换,关键词与标准SQL映射表用于记录关键词与标准SQL编码的对应关系
表2关键词与标准SQL映射表
本实施例的SQL语句的生成方法可以实现智能化的转换,基于人工智能技术对相关的数据进行获取和处理,实现无人值守的人工智能转换。其中,人工智能(ArtificialIntelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
图2是本发明第二实施例的代码测试装置的结构示意图。如图2所示,该SQL语句的生成装置20包括初始化模块201、关键提取模块202、层次化模块203、第一查询模块204、第一转化模块205、第二查询模块206、第二转化模块207以及第三转化模块208,其中,初始化模块201,用于接收待转换的中文查询语句,对所述中文查询语句依次进行特殊符号识别及分词处理,得到所述中文查询语句的查询语句初始序列;关键提取模块202,用于获取所述查询语句初始序列的编码信息序列,其中,所述编码信息序列包括编码信息位置以及编码信息类型;层次化模块203,用于根据所述编码信息序列提取所述查询语句初始序列中的数据表描述片段、主关联片段以及主关联条件片段,依次逐级提取每个所述数据表描述片段中的下一级的数据表描述片段、操作片段和条件片段,直至所述数据表描述片段中仅包括数据表信息;第一查询模块204,用于获取最后一级的数据表描述片段中的数据表信息,根据所述数据表信息获取对应字段信息;第一转化模块205,用于根据所述数据表信息的字段信息将所述最后一级的数据表描述片段转换为对应的SQL数据表描述子句,将所述SQL数据表描述子句、最后一级的操作片段的对应SQL操作子句以及最后一级的条件片段对应的SQL条件子句进行拼接,得到上一级的数据表描述片段的初步SQL描述子句;第二查询模块206,用于根据当前一级的数据表描述片段的初步SQL描述子句获取对应的字段信息,根据所述初步SQL描述子句以及获取的所述字段信息将所述当前一级的数据表描述片段转换为对应的SQL数据表描述子句;第二转化模块207,用于将当前一级的数据表描述片段对应的所述SQL数据表描述子句、当前一级的操作片段的对应SQL操作子句以及当前一级的条件片段对应的SQL条件子句进行拼接,得到上一级的数据表描述片段的初步SQL描述子句;第三转化模块208,用于重复上述步骤,直至得到最高一级的数据表描述片段的SQL描述子句,将所述SQL描述子句、所述主关联片段对应的SQL主关联子句以及所述主关联条件片段对应的SQL主关联条件子句拼接形成所述中文查询语句的SQL语句。
图3是本发明第三实施例的电子设备的结构示意图。如图3所示,该电子设备30包括处理器31及和处理器31耦接的存储器32。
存储器32存储有用于实现上述任一实施例的所述SQL语句的生成方法的程序指令。
处理器31用于执行存储器32存储的程序指令以进行代码测试。
其中,处理器31还可以称为CPU(Central Processing Unit,中央处理单元)。处理器31可能是一种集成电路芯片,具有信号的处理能力。处理器31还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
参阅图4,图4为本发明第四实施例的存储介质的结构示意图。本发明实施例的存储介质存储有能够实现上述所有方法的程序指令41,所述存储介质可以是非易失性,也可以是易失性。其中,该程序指令41可以以软件产品的形式存储在上述存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。以上仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围。
以上所述的仅是本发明的实施方式,在此应当指出,对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出改进,但这些均属于本发明的保护范围。
Claims (10)
1.一种SQL语句的生成方法,其特征在于,包括:
接收待转换的中文查询语句,对所述中文查询语句依次进行特殊符号识别及分词处理,得到所述中文查询语句的查询语句初始序列;
获取所述查询语句初始序列的编码信息序列,其中,所述编码信息序列包括编码信息位置以及编码信息类型;
根据所述编码信息序列提取所述查询语句初始序列中的数据表描述片段、主关联片段以及主关联条件片段,依次逐级提取每个所述数据表描述片段中的下一级的数据表描述片段、操作片段和条件片段,直至所述数据表描述片段中仅包括数据表信息;
获取最后一级的数据表描述片段中的数据表信息,根据所述数据表信息获取对应字段信息;
根据所述数据表信息的字段信息将所述最后一级的数据表描述片段转换为对应的SQL数据表描述子句,将所述SQL数据表描述子句、最后一级的操作片段的对应SQL操作子句以及最后一级的条件片段对应的SQL条件子句进行拼接,得到上一级的数据表描述片段的初步SQL描述子句;
根据当前一级的数据表描述片段的初步SQL描述子句获取对应的字段信息,根据所述初步SQL描述子句以及获取的所述字段信息将所述当前一级的数据表描述片段转换为对应的SQL数据表描述子句;
将当前一级的数据表描述片段对应的所述SQL数据表描述子句、当前一级的操作片段的对应SQL操作子句以及当前一级的条件片段对应的SQL条件子句进行拼接,得到上一级的数据表描述片段的初步SQL描述子句;
重复上述步骤,直至得到最高一级的数据表描述片段的SQL描述子句,将所述SQL描述子句、所述主关联片段对应的SQL主关联子句以及所述主关联条件片段对应的SQL主关联条件子句拼接形成所述中文查询语句的SQL语句。
2.根据权利要求1所述的SQL语句的生成方法,其特征在于,所述获取所述查询语句初始序列的编码信息序列,包括:
将所述查询语句初始序列在预设的编码信息映射表中进行匹配查询,其中,所述编码信息映射表用于记录关键词向量与所述编码信息类型的关联关系;
根据所述关联关系生成查询结果,根据所述查询结果对所述查询语句初始序列进行标注,得到所述编码信息序列。
3.根据权利要求1所述的SQL语句的生成方法,其特征在于,所述根据所述编码信息序列提取所述查询语句初始序列中的数据表描述片段、主关联片段以及主关联条件片段,包括:
确定所述编码信息序列中各逻辑信息的层次位置;
根据所述层次位置提取所述数据表描述片段;
将两个所述数据表描述片段之间的关联操作信息作为主关联片段;
从所述查询语句初始序列的剩余片段中提取主关联条件片段。
4.根据权利要求3所述的SQL语句的生成方法,其特征在于,所述从所述查询语句初始序列的剩余片段中提取主关联条件片段,包括:
从所述查询语句初始序列提取主过滤片段和主过滤条件片段;
若主过滤片段及主过滤条件片段提取成功,则提取靠近所述主过滤片段的数据表描述片段与所述主过滤片段之间的信息作为主关联条件片段;
若主过滤片段及主过滤条件片段提取失败,则将所述查询语句初始序列的剩余片段作为所述主关联条件片段。
5.根据权利要求4所述的SQL语句的生成方法,其特征在于,所述将所述SQL描述子句、所述主关联片段对应的SQL主关联子句以及所述主关联条件片段对应的SQL主关联条件子句拼接形成所述中文查询语句的SQL语句之后,还包括:
获取所述主过滤片段对应的SQL过滤操作子句以及所述主过滤条件片段对应的SQL过滤条件子句;
将所述SQL语句、所述SQL过滤操作子句以及所述SQL过滤条件子句拼接形成最终SQL语句。
6.根据权利要求3所述的SQL语句的生成方法,其特征在于,所述逻辑信息包括左括号和右括号;
所述确定所述编码信息序列中各逻辑信息的层次位置,包括:
对所述编码信息序列进行扫描;
当扫描到左括号时,当前计数加一,将当前计数作为该左括号的层次编码,其中,当前计数的初始值为0;
当扫描到右括号时,当前计数减一,将距离当前右括号最近的已扫描且未配对左括号与当前右括号进行配对;
直至遍历所述编码信息序列中每个编码信息,根据各逻辑信息的层次编码和配对关系得到各逻辑信息的层次位置。
7.根据权利要求1所述的SQL语句的生成方法,其特征在于,所述接收待转换的中文查询语句之前,还包括:
接收用户输入的查询指令,展示查询输入界面;
接收用户在所述查询输入界面上录入的查询信息,根据所述查询信息生成所述中文查询语句。
8.一种SQL语句的生成装置,其特征在于,包括:
初始化模块,用于接收待转换的中文查询语句,对所述中文查询语句依次进行特殊符号识别及分词处理,得到所述中文查询语句的查询语句初始序列;
关键提取模块,用于获取所述查询语句初始序列的编码信息序列,其中,所述编码信息序列包括编码信息位置以及编码信息类型;
层次化模块,用于根据所述编码信息序列提取所述查询语句初始序列中的数据表描述片段、主关联片段以及主关联条件片段,依次逐级提取每个所述数据表描述片段中的下一级的数据表描述片段、操作片段和条件片段,直至所述数据表描述片段中仅包括数据表信息;
第一查询模块,用于获取最后一级的数据表描述片段中的数据表信息,根据所述数据表信息获取对应字段信息;
第一转化模块,用于根据所述数据表信息的字段信息将所述最后一级的数据表描述片段转换为对应的SQL数据表描述子句,将所述SQL数据表描述子句、最后一级的操作片段的对应SQL操作子句以及最后一级的条件片段对应的SQL条件子句进行拼接,得到上一级的数据表描述片段的初步SQL描述子句;
第二查询模块,用于根据当前一级的数据表描述片段的初步SQL描述子句获取对应的字段信息,根据所述初步SQL描述子句以及获取的所述字段信息将所述当前一级的数据表描述片段转换为对应的SQL数据表描述子句;
第二转化模块,用于将当前一级的数据表描述片段对应的所述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 |
---|---|---|---|
CN202111155572.3A CN113886420A (zh) | 2021-09-29 | 2021-09-29 | Sql语句的生成方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111155572.3A CN113886420A (zh) | 2021-09-29 | 2021-09-29 | Sql语句的生成方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113886420A true CN113886420A (zh) | 2022-01-04 |
Family
ID=79004498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111155572.3A Pending CN113886420A (zh) | 2021-09-29 | 2021-09-29 | Sql语句的生成方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113886420A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114817293A (zh) * | 2022-03-31 | 2022-07-29 | 华能信息技术有限公司 | 一种基于分布式sql的数据查询方法及系统 |
-
2021
- 2021-09-29 CN CN202111155572.3A patent/CN113886420A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114817293A (zh) * | 2022-03-31 | 2022-07-29 | 华能信息技术有限公司 | 一种基于分布式sql的数据查询方法及系统 |
CN114817293B (zh) * | 2022-03-31 | 2022-11-08 | 华能信息技术有限公司 | 一种基于分布式sql的数据查询方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6904430B1 (en) | Method and system for efficiently identifying differences between large files | |
JP3152868B2 (ja) | 検索装置および辞書/テキスト検索方法 | |
WO2015009297A1 (en) | Systems and methods for extracting table information from documents | |
IES20020647A2 (en) | A data quality system | |
CN110276080B (zh) | 一种语义处理方法和系统 | |
US20220019739A1 (en) | Item Recall Method and System, Electronic Device and Readable Storage Medium | |
CN110969517B (zh) | 一种招投标生命周期关联方法、系统、存储介质及计算机设备 | |
CN112784009B (zh) | 一种主题词挖掘方法、装置、电子设备及存储介质 | |
US9524354B2 (en) | Device, method, and program for processing data with tree structure | |
CN113886420A (zh) | Sql语句的生成方法、装置、电子设备及存储介质 | |
CN112582073B (zh) | 医疗信息获取方法、装置、电子设备和介质 | |
CN113032371A (zh) | 数据库语法分析方法、装置和计算机设备 | |
CN110929022A (zh) | 一种文本摘要生成方法及系统 | |
CN112699642B (zh) | 复杂医疗文书的索引提取方法及装置、介质及电子设备 | |
CN102567424B (zh) | 一种诗词关联库系统及其实现方法和电子学习设备 | |
CN115268869A (zh) | 一种基于图序列化的代码搜索系统及方法 | |
CN110413779B (zh) | 一种针对电力行业的词向量训练方法及其系统、介质 | |
CN114357984A (zh) | 一种基于拼音的同音字变体处理方法 | |
CN111310442B (zh) | 形近字纠错语料挖掘方法、纠错方法、设备及存储介质 | |
CN114676155A (zh) | 代码提示信息的确定方法、数据集的确定方法及电子设备 | |
CN114238595A (zh) | 一种基于知识图谱的冶金知识问答方法及系统 | |
CN113741864A (zh) | 基于自然语言处理的语义化服务接口自动设计方法与系统 | |
CN113536786A (zh) | 混淆汉字的生成方法、终端设备及计算机可读存储介质 | |
CN112115362A (zh) | 一种基于相似代码识别的编程信息推荐方法及装置 | |
CN111402012B (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 |