CN113312373A - 一种数据结构化查询语句的解析方法及设备 - Google Patents
一种数据结构化查询语句的解析方法及设备 Download PDFInfo
- Publication number
- CN113312373A CN113312373A CN202110517879.7A CN202110517879A CN113312373A CN 113312373 A CN113312373 A CN 113312373A CN 202110517879 A CN202110517879 A CN 202110517879A CN 113312373 A CN113312373 A CN 113312373A
- Authority
- CN
- China
- Prior art keywords
- sql
- lexical
- statements
- sql statements
- statement
- 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
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)
- Stored Programmes (AREA)
Abstract
本申请的目的是提供一种数据结构化查询语句的解析方法及设备,本申请通过获取待处理的第一数量的SQL语句;分别对每条SQL语句进行词法分析和词法检查,得到第二数量的SQL语句及其词法表,词法表包括SQL语句的数组结构;分别对每条SQL语句进行语法分析,得到第三数量的SQL语句及其中间内部表示信息;分别基于每条SQL语句的词法表和中间内部表示信息,生成第三数量的SQL语句中的所述SQL语句的抽象语法树;分别执行与抽象语法树对应的SQL语句以进行对应的数据操作,实现了根据不同的SQL语句,解析后的数据以相同数据结构存放,以便对数据库进行对应的数据操作,还降低数据丢失的概率,并且提高了系统的工作效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据结构化查询语句的解析方法及设备。
背景技术
现有技术中,随着信息技术的不断发展,信息泄漏事件也频繁发生,用户对数据库的安全性越来越关注。由于数据库本身的复杂性,数据库的管理运行、日常维护和数据安全保护只能由专业的数据库管理员进行,但很多使用数据库的人并不熟悉数据库,甚至完全不了解数据库。
结构化查询语言(Structured Query Language,SQL)分析技术中,ANTLR是一个强大完备的语法识别工具,在语法识别、语言翻译、软件测试等方面应用广泛,ANTLR已经持续发展了将近30年的时间,许多著名的开源软件都使用了ANTLR作为其语法解析工具,例如Presto、Hive、Spark SQL等大数据处理框架,Oracal SQL Developer IDE、NetBeans等继承开发工具。
其中,SOL语言本身不具有控制结构,它依赖于宿主语言来进行复杂操作。但是使用宿主语言存在两个问题:SOL语言的数据类型并不是完全和宿主语言一致,不一致时必须在预编译阶段进行类型转换,这可能导致数据的丢失;另一个问题是增加了网络负担,降低了运行效率。例如当某个循环体中包含了几个查询语句,每执行一次这个循环体就要通过网络向服务器提交这些查询语句供服务器编译执行,从而增大了客户机与服务器之间网络传输的通信量,降低了系统的工作效率。
发明内容
本申请的一个目的是提供一种数据结构化查询语句的解析方法及设备,实现了数据库中内存数据的各种操作和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示出根据本申请一个方面的一种数据结构化查询语句的解析方法的流程示意图;
图2示出根据本申请一个方面的一种数据结构化查询语句的解析方法中的含有查询条件的SQL语句的处理流程示意图;
图3示出根据本申请一个方面的一种数据结构化查询语句的解析方法中的SQL解析器的实现流程图;
图4示出根据本申请一个方面的一种数据结构化查询语句的解析方法中的SQL查询条件的生成流程图;
图5示出根据本申请一个方面的一种数据结构化查询语句的解析方法中的SQL语句的处理流程图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
根据本申请一个方面的实施例,提供了一种数据结构化查询语句的解析方法的流程示意图,如图1所示,该方法基于大数据对检索指令(比如SQL语句等)进行智能解析的过程中,针对内存数据对象的物理组织和索引,并实现了内存数据对象管理器及其各子模块,还设计了SQL语句的解析模块,包括但不限于词法解析器和语法解析器,实现了数据库中内存数据的各种操作和SQL语句的功能实现,降低数据丢失的概率,并且提高了系统的工作效率。其中,所述方法包括客户端执行的步骤S11、步骤S12、步骤S13、步骤S14及步骤S15,具体包括如下步骤:
步骤S11,获取待处理的第一数量的SQL语句;在步骤S11中,独权大量的待处理的SQL语句,并把获取的待处理的全部SQL语句分条读到需要识别的内存中。所述第一数量包括但不限于成百上千的SQL语句,便于对大数据中的众多的SQL语句进行获取。
步骤S12,分别对每条所述SQL语句进行词法分析和词法检查,得到第二数量的SQL语句及其词法表,所述SQL语句的词法表包括所述SQL语句的数组结构,所述第二数量小于等于所述第一数量。在步骤S12中,对获取的第一数量的SQL语句进行词法分析时,采用词法解析器,所述词法解析器负责根据预设的词法规则(lexer rules)将输入文本分隔成一个个符号token,将字符组合成为单词或符号,这里可以将一个符号也视为一个单词,这个过程被称为词法分析(exical analysis)或则符号化(tokenizing),能够将输入字符流符号化的程序被称为词法解析器(lexer),不负责文本的语义的解释。
在步骤S12中,若第二数量小于所述第一数量,则指示通过词法分析后,第一数量的SQL语句中存在词法错误的SQL语句;若第二数量等于所述第一数量,则指示第一数量的SQL语句中的全部SQL语句均不存在词法错误。
步骤S13,分别对所述第二数量的SQL语句中的每条所述SQL语句进行语法分析,得到第三数量的SQL语句及其中间内部表示信息,所述第三数量小于等于所述第二数量。在步骤S13中,若第三数量小于所述第二数量,则指示通过语法分析后,第二数量的SQL语句中存在语法错误的SQL语句;若第三数量等于所述第二数量,则指示第二数量的SQL语句中的全部SQL语句均不存在语法错误。在此,所述步骤S13中进行语法解析使,才用语法解析器(parser),该语法解析器根据预设的语法规则(parser rules),将符号流构建为一棵抽象语法树的形式,解析后生成的抽象语法树也就代了输入文本的语法结构。
步骤S14,分别基于所述第三数量的SQL语句中的每条所述SQL语句的词法表和中间内部表示信息,生成所述第三数量的SQL语句中的每条所述SQL语句的抽象语法树;在步骤S12和步骤S13中依序采用词法解析器和语法解析器的作用就是为了将查询语句:SQL语句解析成对应的抽象语法树(AST),使得通过SQL分析技术能够帮助用户快速抽取SQL语句中的字段、表、视图及对数据的操作,快速识别SQL语句的风险,同时基于SQL分析技术能够将SQL语句翻译成抽象语法树或者自然语言等,使之更容易被理解。
步骤S15,分别执行与所述抽象语法树对应的SQL语句以进行对应的数据操作。
通过上述步骤S11至步骤S15,实现了根据不同的SQL语句,解析后的数据以相同数据结构存放,以便对数据库进行对应的数据操作,使得实现了数据库中内存数据的各种操作和SQL语句的功能实现,降低数据丢失的概率,并且提高了系统的工作效率。
例如,在步骤S11中,获取待处理的N1条SQL语句,在本申请一优选实施例中,优选N1为大于等于3的正整数;在步骤S12中,采用词法解析器分别对N1条SQL语句中的每条所述SQL语句进行词法分析和词法检查,得到N2条SQL语句及N2条SQL语句中的每条SQL语句的词法表,所述SQL语句的词法表包括所述SQL语句的数组结构,其中,N2为小于等于N1的正整数;在步骤S13中,采用语法解析器分别对N2条SQL语句中的每条所述SQL语句进行语法分析,得到N3条SQL语句及其中间内部表示信息,其中,N3为小于等于N2的正整数;在步骤S14中,经过词法解析器和语法解析器后,分别基于得到的N3条SQL语句中的每条所述SQL语句的词法表和中间内部表示信息,生成N3条SQL语句中的每条所述SQL语句的抽象语法树,使得N3条SQL语句在经过词法解析器、语法解析器及生成语法树后,若没有出现任何错误,则在步骤S15中,分别根据每条SQL语句各自对应的存储地址,执行与所述抽象语法树对应的SQL语句以进行对应的数据操作,其中,对每条SQL语句进行解析的整个流程图如图2所示,在图中执行函数部分就是指对内存进行创建、查询、更新、删除等数据操作。此外,对SQL语句进行解析以生成抽象语法树的解析实现流程图如图3所示。
接着本申请的上述实施例,所述步骤S12分别对每条所述SQL语句进行词法分析和词法检查,得到第二数量的SQL语句及其词法表,所述SQL语句的词法表包括所述SQL语句的数组结构,具体包括:
采用预设的词法规则分别对每条所述SQL语句进行词法分析,得到每条所述SQL语句对应的所有单词及其属性;在此,SQL语句的词法分析是针对词法表进行操作,在本申请中,词法表是用数组实现的,根据预先定义的数组下标值的含义(即预设的词法规则)来判断SQL语句在数据库中的数据操作。每一条SQL语句仅仅是一个长的字符串,它的生成过程如图4所示,通过词法分析时将把这种形式的SQL语句转化为便于进行处理的内部格式。
分别基于每条所述SQL语句对应的所有单词及其属性,依序对所述SQL语句中的所有单词进行有效过滤和词法检查,得到第二数量的SQL语句及其词法表,所述词法表中的单词均为有效单词。
例如,在对SQL语句进行词法分析时,首先对SQL语句进行词法分析是对输入的带有字符串形式的SQL语句按顺序进行扫描,在扫描的同时,根据预设的词法规则分别对每条SQL语句进行词法分析,以识别SQL语句中的具有独立意义的若干个记号(Token)或单词,在本申请中将单独的记号也作为单词进行分析,并记录每条SQL语句中的各记号或单词及其属性,该属性包括但不限于类型、值、符号串等,其中,SQL语句中的记号类型可以包括但不限于保留字、特殊符号、标识符及常量等。然后,分别基于每条所述SQL语句对应的所有单词及其属性,对识别出的SQL语句中的各字符串对应的各个词法单位(即单词)进行有效过滤,删除无用的空白符、回车符以及其他与输入介质相关的非实质性字符并删除注释等,以便得到的SQL语句的词法表中的每个单词均为有效单词,最后再进行词法检查,以便得到的每条SQL语句的词法表中的单词不仅为有效的单词,还符合对应的词法规则,以实现对第一数量的SQL语句的词法分析,进而得到词法分析后的第二数量的SQL语句及其词法表。在步骤S12中,词法分析的任务是把每条SQL语句按顺序扫描,并将其分解成一个个单词或基本符号填入词法表,该词法表采用数组结构的形式存放。
本实施例中,若所述第二数量小于所述第一数量,所述方法还包括:
生成用于指示SQL语句存在词法错误的第一响应信息,其中,所述第一响应信息包括所述第一数量的SQL语句中的、除所述第二数量的SQL语句以外的其他SQL语句及其单词错误信息。
例如,在步骤S12中,在对N1条SQL语句进行词法分析后,若N1条SQL语句中存在词法错误的SQL语句,则需要生成用于指示SQL语句存在词法错误的第一响应信息,当然,该第一响应信息中包括N1条SQL语句中除N2条SQL语句以外的其他SQL语句及其单词错误信息,即第一响应信息中包括(N1-N2)条SQL语句及其单词错误信息,以达到报告SQL语句中存在词法错误的发现。
接着本申请的上述实施例,所述步骤S13分别对所述第二数量的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语句的重复性和字符出错率。
其中,语法分析的任务是确定语言的结构,因此分析程序的任务是从扫描程序产生的记号中确定程序的语法结构,以及或显示或隐式地构造出表示该结构的分析树或者语法树,因此,可将分析程序看作一个函数,该函数把由扫描程序生成的记号序列作为输入,并生成语法树作为它的输出。语法树的结构在很大程序上依赖于语言特定的语法结构,这种语法树通常被定义为动态数据结构,该结构中的每个节点都由一个记录组成,而这个记录的域包括了解析后面过程所需的特性。在分析程序中有个比在扫描程序中更为复杂的问题,这就是对于错误的处理,在扫描字符串时,如果遇到的一个字符式不正规记号的一部分,那么它只需生成一个出错记号并消耗掉这个不正规的字符即可(在某种意义上,通过生成一个出错记号,扫描程序就克服了发生在分析程序上的困难)。但对于分析程序而言,它必须不仅报告一个出错信息,而且还须从错误状态恢复(recover)并继续进行分析,以便找到尽可能多的错误。
例如,在步骤S12中对每条SQL语句进行词法分析后,还需要对词法分析后的N2条SQL语句中的每条SQL语句进行语法分析,在语法分析时,首先对N2条SQL语句中的每条SQL语句按照严格的预设的语法规则,对每条SQL语句中的字符串进行语法检查和语法分析,当然,语法分析的复杂程度随着语法允许的自由程度而增加,得到N3条SQL语句及其原始数据,N3为小于等于N2的正整数,这里的原始数据为SQL语句本来的呈现形式,即对于需要进行操作的数据库来说,算是外部字符形式,比如外部关系名、属性名等;为了便于对SQL语句需要操作的数据库的数据操作和记忆,需要将外部表示形式的字符等转换成操作数据库可识别的形式,比如将外部关系名、属性名等外部标识形式转换成中间内部表示名等,如外部名用符号表示,便于记忆,内部名以数字表示,由系统使用,使得通过译名建立外部名与内部名的对应,为此要存取系统目录,以得到N3条SQL语句中的每条SQL语句的中间内部表示信息,之后再对中间内部表示信息进行数据类型的格式和转换作简单的完整性检查,以实现对SQL语句的语法分析,其中,对每条SQL语句进行处理的流程图如图5所示。
本实施例中,若所述第三数量小于所述第二数量,所述方法还包括:
生成用于指示SQL语句存在语法错误的第二响应信息,其中,所述第二响应信息包括所述第二数量的SQL语句中的、除所述第三数量的SQL语句以外的其他SQL语句及其语法错误信息。
例如,在步骤S13中,在对N2条SQL语句进行语法分析后,若N2条语句中存在语法分析错误的SQL语句,则需要生成用于指示SQL语句存在语法错误的第二响应信息,当然,该第二响应信息中包括N2条SQL语句中除N3条SQL语句以外的其他SQL语句及其语法错误信息,即第二响应信息中包括(N2-N3)条SQL语句及其语法错误信息,以达到报告SQL语句中存在语法错误的发现。
在本申请中,使用JAVA语言和Python语言进行检索指令(比如SQL语句等)进行智能解析,并且使用多块CPU运行可以达到最佳的实施效果。但本申请不限于上述特定实施方式。
进一步地,本申请所实现的SQL语句的词法和语法解析器,对处理不同类型的系统背景提供了接口。该SQL语句的词法和语法解析器是处理应用层和数据库之间数据消息的一个接口,系统采用的数据库类型不是唯一的,有可能是Oracle、Sybase、文件数据库、内存数据库等,对应用层来说,SQL语句的词法和语法解析器提供的接口是不变的,这就大大减少了应用层的数据库参与,提高系统的模块独立性。这样就要求所实现的SQL语句的词法和语法解析器必须能够根据不同SQL语句,解析后的数据是以相同数据结构存放的,以便对数据库进行查询、更改、增加及删除等操作,并受到保护。
在本申请中,基于大数据的检索指令(比如SQL语句等)智能解析的上述解析方法还可以包括其他方法,例如解析器生成器(parser generator)工:ANTLR(Another Toolfor Language Recognition),ANTLR是一个解析器生成器(parser generator)工具,它会根据给定的词法规则(lexer rule)和语法规则(grammar rule)生成相对该词法的词法解析(lexer)、递归下降(recursive-descent)的语法解析器(parser)等。
根据本申请的另一方面,还提供了一种非易失性存储介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行时,使所述处理器实现如上述数据结构化查询语句的解析方法。
根据本申请的另一方面,还提供了一种SQL语句的解析设备,其中,该设备包括:
一个或多个处理器;
计算机可读介质,用于存储一个或多个计算机可读指令,
当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述数据结构化查询语句的解析方法。
在此,所述SQL语句的解析设备中的各实施例的详细内容,具体可参见上述数据结构化查询语句的解析方法的实施例的对应部分,在此,不再赘述。
综上所述,本申请通过先获取待处理的第一数量的SQL语句;然后,分别对每条所述SQL语句进行词法分析和词法检查,得到第二数量的SQL语句及其词法表,所述SQL语句的词法表包括所述SQL语句的数组结构,所述第二数量小于等于所述第一数量;接着,分别对所述第二数量的SQL语句中的每条所述SQL语句进行语法分析,得到第三数量的SQL语句及其中间内部表示信息,所述第三数量小于等于所述第二数量;之后,分别基于所述第三数量的SQL语句中的每条所述SQL语句的词法表和中间内部表示信息,生成所述第三数量的SQL语句中的每条所述SQL语句的抽象语法树;最后,分别执行与所述抽象语法树对应的SQL语句以进行对应的数据操作,实现了根据不同的SQL语句,解析后的数据以相同数据结构存放,以便对数据库进行对应的数据操作,使得实现了数据库中内存数据的各种操作和SQL语句的功能实现,降低数据丢失的概率,并且提高了系统的工作效率。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (7)
1.一种数据结构化查询语句的解析方法,其中,所述方法包括:
获取待处理的第一数量的SQL语句;
分别对每条所述SQL语句进行词法分析和词法检查,得到第二数量的SQL语句及其词法表,所述SQL语句的词法表包括所述SQL语句的数组结构,所述第二数量小于等于所述第一数量;
分别对所述第二数量的SQL语句中的每条所述SQL语句进行语法分析,得到第三数量的SQL语句及其中间内部表示信息,所述第三数量小于等于所述第二数量;
分别基于所述第三数量的SQL语句中的每条所述SQL语句的词法表和中间内部表示信息,生成所述第三数量的SQL语句中的每条所述SQL语句的抽象语法树;
分别执行与所述抽象语法树对应的SQL语句以进行对应的数据操作。
2.根据权利要求1所述的方法,其中,所述分别对每条所述SQL语句进行词法分析和词法检查,得到第二数量的SQL语句及其词法表,所述SQL语句的词法表包括所述SQL语句的数组结构,包括:
采用预设的词法规则分别对每条所述SQL语句进行词法分析,得到每条所述SQL语句对应的所有单词及其属性;
分别基于每条所述SQL语句对应的所有单词及其属性,依序对所述SQL语句中的所有单词进行有效过滤和词法检查,得到第二数量的SQL语句及其词法表,所述词法表中的单词均为有效单词。
3.根据权利要求2所述的方法,其中,若所述第二数量小于所述第一数量,所述方法还包括:
生成用于指示SQL语句存在词法错误的第一响应信息,其中,所述第一响应信息包括所述第一数量的SQL语句中的、除所述第二数量的SQL语句以外的其他SQL语句及其单词错误信息。
4.根据权利要求1所述的方法,其中,所述分别对所述第二数量的SQL语句中的每条所述SQL语句进行语法分析,得到第三数量的SQL语句及其中间内部表示信息,所述第三数量小于等于所述第二数量,包括:
分别对所述第二数量的SQL语句中的每条所述SQL语句进行语法检查和分析,得到第三数量的SQL语句及其原始数据,所述第三数量小于等于所述第二数量;
分别对所述第三数量的SQL语句中的每条所述SQL语句的原始数据进行归一化数据转换,得到所述第三数量的SQL语句中的每条所述SQL语句的中间内部表示信息。
5.根据权利要求4所述的方法,其中,若所述第三数量小于所述第二数量,所述方法还包括:
生成用于指示SQL语句存在语法错误的第二响应信息,其中,所述第二响应信息包括所述第二数量的SQL语句中的、除所述第三数量的SQL语句以外的其他SQL语句及其语法错误信息。
6.一种非易失性存储介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行时,使所述处理器实现如权利要求1至5中任一项所述的方法。
7.一种SQL语句的解析设备,其中,该设备包括:
一个或多个处理器;
计算机可读介质,用于存储一个或多个计算机可读指令,
当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1至5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110517879.7A CN113312373A (zh) | 2021-05-12 | 2021-05-12 | 一种数据结构化查询语句的解析方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110517879.7A CN113312373A (zh) | 2021-05-12 | 2021-05-12 | 一种数据结构化查询语句的解析方法及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113312373A true CN113312373A (zh) | 2021-08-27 |
Family
ID=77373083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110517879.7A Pending CN113312373A (zh) | 2021-05-12 | 2021-05-12 | 一种数据结构化查询语句的解析方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113312373A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114118055A (zh) * | 2021-12-06 | 2022-03-01 | 中电万维信息技术有限责任公司 | 复杂sql语句优化解析方法 |
CN114547079A (zh) * | 2022-02-24 | 2022-05-27 | 平安普惠企业管理有限公司 | Sql语句的统计方法、装置、计算机设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019291A (zh) * | 2017-09-04 | 2019-07-16 | 中国移动通信集团浙江有限公司 | 一种sql解析方法和sql解析器 |
CN111522816A (zh) * | 2020-04-16 | 2020-08-11 | 云和恩墨(北京)信息技术有限公司 | 基于数据库引擎的数据处理方法、装置、终端及介质 |
CN111949541A (zh) * | 2020-08-14 | 2020-11-17 | 中国工商银行股份有限公司 | 多源数据库语句检查方法及装置 |
WO2020233367A1 (zh) * | 2019-05-22 | 2020-11-26 | 深圳壹账通智能科技有限公司 | 区块链数据存储和查询方法、装置、设备及存储介质 |
CN112363727A (zh) * | 2020-11-10 | 2021-02-12 | 中国平安人寿保险股份有限公司 | Sql代码的java转换方法、装置、计算机设备及存储介质 |
US20210191934A1 (en) * | 2020-09-04 | 2021-06-24 | Beijing Baidu Netcom Science Technology Co., Ltd. | Target data obtaining method and apparatus |
-
2021
- 2021-05-12 CN CN202110517879.7A patent/CN113312373A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019291A (zh) * | 2017-09-04 | 2019-07-16 | 中国移动通信集团浙江有限公司 | 一种sql解析方法和sql解析器 |
WO2020233367A1 (zh) * | 2019-05-22 | 2020-11-26 | 深圳壹账通智能科技有限公司 | 区块链数据存储和查询方法、装置、设备及存储介质 |
CN111522816A (zh) * | 2020-04-16 | 2020-08-11 | 云和恩墨(北京)信息技术有限公司 | 基于数据库引擎的数据处理方法、装置、终端及介质 |
CN111949541A (zh) * | 2020-08-14 | 2020-11-17 | 中国工商银行股份有限公司 | 多源数据库语句检查方法及装置 |
US20210191934A1 (en) * | 2020-09-04 | 2021-06-24 | Beijing Baidu Netcom Science Technology Co., Ltd. | Target data obtaining method and apparatus |
CN112363727A (zh) * | 2020-11-10 | 2021-02-12 | 中国平安人寿保险股份有限公司 | Sql代码的java转换方法、装置、计算机设备及存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114118055A (zh) * | 2021-12-06 | 2022-03-01 | 中电万维信息技术有限责任公司 | 复杂sql语句优化解析方法 |
CN114118055B (zh) * | 2021-12-06 | 2024-05-10 | 中电万维信息技术有限责任公司 | 复杂sql语句优化解析方法 |
CN114547079A (zh) * | 2022-02-24 | 2022-05-27 | 平安普惠企业管理有限公司 | Sql语句的统计方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11334692B2 (en) | Extracting a knowledge graph from program source code | |
CN113032362B (zh) | 数据血缘分析方法、装置、电子设备和存储介质 | |
US8914419B2 (en) | Extracting semantic relationships from table structures in electronic documents | |
CN108388635B (zh) | 数据搜索方法、装置、介质和计算设备 | |
EP3080723B1 (en) | Building features and indexing for knowledge-based matching | |
US9122540B2 (en) | Transformation of computer programs and eliminating errors | |
US20160306736A1 (en) | Translation verification testing | |
US10606957B1 (en) | Method and system for translating natural language policy to logical access control policy | |
US9892191B2 (en) | Complex query handling | |
US8326833B2 (en) | Implementing metadata extraction of artifacts from associated collaborative discussions | |
CN113312373A (zh) | 一种数据结构化查询语句的解析方法及设备 | |
CN112988163B (zh) | 编程语言智能适配方法、装置、电子设备和介质 | |
CN112363706A (zh) | 一种嵌套组合的预处理方法及设备 | |
CN117076742A (zh) | 数据血缘追踪方法、装置及电子设备 | |
CN111552792A (zh) | 一种信息查询方法、装置、电子设备及存储介质 | |
US11500619B1 (en) | Indexing and accessing source code snippets contained in documents | |
CN108008947B (zh) | 一种编程语句的智能提示方法、装置、服务器及存储介质 | |
US9720905B2 (en) | Augmented text search with syntactic information | |
US11386132B2 (en) | System and method for retrieving results and responses with context based exclusion criteria | |
KR100762712B1 (ko) | 규칙기반의 전자문서 변환방법 및 그 시스템 | |
US10540157B2 (en) | Systems to remove object relational mappings from a software project | |
CN116467047A (zh) | 针对容器配置合规性的检测方法、装置、存储介质及终端 | |
CN113343036B (zh) | 基于关键拓扑结构分析的数据血缘关系解析方法和系统 | |
CN112799638B (zh) | 无侵入式快速开发方法、平台、终端及存储介质 | |
CN110209885B (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 |