CN105787044A - 一种基于MySQL的SQL解析器及其解析方法 - Google Patents

一种基于MySQL的SQL解析器及其解析方法 Download PDF

Info

Publication number
CN105787044A
CN105787044A CN201610107393.5A CN201610107393A CN105787044A CN 105787044 A CN105787044 A CN 105787044A CN 201610107393 A CN201610107393 A CN 201610107393A CN 105787044 A CN105787044 A CN 105787044A
Authority
CN
China
Prior art keywords
labelling
mysql
analyzer
syntax tree
grammer
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
Application number
CN201610107393.5A
Other languages
English (en)
Inventor
王震
张学诚
朱振
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Pinwei Software Co Ltd
Original Assignee
Guangzhou Pinwei Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Pinwei Software Co Ltd filed Critical Guangzhou Pinwei Software Co Ltd
Priority to CN201610107393.5A priority Critical patent/CN105787044A/zh
Publication of CN105787044A publication Critical patent/CN105787044A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种基于MySQL的SQL解析器及其解析方法,解决了目前的词法和语法分析工具,均由于不支持MySQL特有的SQL语句、无法实现通过注释扩展其功能,导致的数据分析过程的复杂性的技术问题。本发明实施例基于MySQL的SQL解析器包括:词法分析器、语法分析器和语法树分析器;其中,词法分析器将获取到的字符流进行MySQL语言词法分析,输出MySQL语言对应的记号流到语法分析器进行MySQL语言对应的语法片段分析,输出语法片段对应的语法树给语法树分析器进行分析。

Description

一种基于MySQL的SQL解析器及其解析方法
技术领域
本发明涉及数据库技术领域,尤其涉及一种基于MySQL的SQL解析器及其解析方法。
背景技术
SQL,结构化查询语言(StructuredQueryLanguage)简称SQL(发音:/eskjuel/"S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle旗下公司。MySQL最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件之一。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
词法和语法分析属于编译原理的核心技术,在计算机领域应用广泛,关系型数据库,如:Oracle、MySQL;大数据,如:Hive、Impala;ORM框架,如:Hibernate,都使用了词法和语法分析技术。目前,词法和语法分析的辅助工具很多,Java领域主要有JavaCC和Antlr两种实现方式。Hibernate通过Antlr实现词法和语法分析,JSqlParser通过JavaCC实现词法和语法分析。
Hibernate通过Antlr实现词法和语法分析,具体实现是针对特有的HQL语句,不支持MySQLSQL语法。JSqlParser是业界比较著名的开源词法和语法分析工具,主要是支持标准SQL,不支持MySQL特有的SQL语句,此外,JSqlParser处理SQL注释的能力有限,无法实现通过注释扩展功能的目的。
然而,上述提及的词法和语法分析工具,均由于不支持MySQL特有的SQL语句、无法实现通过注释扩展其功能,导致了数据分析过程的复杂性的技术问题。
发明内容
本发明实施例提供的一种基于MySQL的SQL解析器及其解析方法,解决了目前的词法和语法分析工具,均由于不支持MySQL特有的SQL语句、无法实现通过注释扩展其功能,导致的数据分析过程的复杂性的技术问题。
本发明实施例提供的一种基于MySQL的SQL解析器,包括:
词法分析器、语法分析器和语法树分析器;
其中,所述词法分析器将获取到的字符流进行MySQL语言词法分析,输出所述MySQL语言对应的记号流到所述语法分析器进行MySQL语言对应的语法片段分析,输出所述语法片段对应的语法树给所述语法树分析器进行分析。
可选地,所述词法分析器包括TOKENS标记识别模块,用于进行所述MySQL语言词法分析。
可选地,所述语法分析器包括:
SELECT片段识别模块,用于识别SELECT语法;
DELETE片段识别模块,用于识别DELETE语法;
UPDATE片段识别模块,用于识别UPDATE语法;
INSERT片段识别模块,用于识别INSERT语法。
可选地,所述语法树分析器,用于根据获取到所述语法树形成分析辅助,输出与所述MySQL语言对应的标准SQL识别语言。
可选地,所述语法树分析器包括:
SELECT语法树识别模块,用于识别SELECT语法树;
DELETE语法树识别模块,用于识别DELETE语法树;
UPDATE语法树识别模块,用于识别UPDATE语法树;
INSERT语法树识别模块,用于识别INSERT语法树。
可选地,所述TOKENS标记识别模块包括MAX标记、MIN标记、AVG标记、SUM标记、COUNT标记、OR标记、SELECT标记、SET标记、UPDATE标记、WHERE标记、LEFT标记、RIGHT标记、INNER标记、CROSS标记、OUTER标记、JOIN标记。
本发明实施例提供的一种基于MySQL的SQL解析器的解析方法,包括:
通过词法分析器将获取到的字符流进行MySQL语言词法分析,并输出所述MySQL语言对应的记号流到语法分析器;
通过所述语法分析器进行MySQL语言对应的语法片段分析,并输出语法片段对应的语法树给语法树分析器进行分析。
可选地,词法分析器将获取到的字符流进行MySQL语言词法分析,并输出所述MySQL语言对应的记号流到语法分析器之前还包括:
建立所述词法分析器,进行TOKENS标记的定义;
建立所述语法分析器,进行与所述MySQL语言对应的片段定义;
建立语法树分析器,进行与所述片段对应的语法树的定义。
可选地,所述TOKENS标记包括MAX标记、MIN标记、AVG标记、SUM标记、COUNT标记、OR标记、SELECT标记、SET标记、UPDATE标记、WHERE标记、LEFT标记、RIGHT标记、INNER标记、CROSS标记、OUTER标记和JOIN标记。
可选地,所述片段包括SELECT语法、DELETE语法、UPDATE语法和INSERT语法;
所述语法树包括SELECT语法树、DELETE语法树、UPDATE语法树和INSERT语法树。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施例提供的一种基于MySQL的SQL解析器及其解析方法,其中,基于MySQL的SQL解析器包括:词法分析器、语法分析器和语法树分析器;其中,词法分析器将获取到的字符流进行MySQL语言词法分析,输出MySQL语言对应的记号流到语法分析器进行MySQL语言对应的语法片段分析,输出语法片段对应的语法树给语法树分析器进行分析。本实施例中,通过词法分析器将获取到的字符流进行MySQL语言词法分析,输出MySQL语言对应的记号流到语法分析器进行MySQL语言对应的语法片段分析,输出语法片段对应的语法树给语法树分析器进行分析,实现了基于Antlr自定义的MySQLSQL解析器,自定义词法和语法,实现对MySQL特有方言的支持,此外对SQL注释进行词法和语法解析,可以通过注释实现复杂性功能,解决了目前的词法和语法分析工具,均由于不支持MySQL特有的SQL语句、无法实现通过注释扩展其功能,导致的数据分析过程的复杂性的技术问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的一种基于MySQL的SQL解析器的一个实施例的结构示意图;
图2为本发明实施例提供的一种基于MySQL的SQL解析器的另一个实施例的结构示意图;
图3为本发明实施例提供的一种基于MySQL的SQL解析器的解析方法的一个实施例的流程示意图;
图4为本发明实施例提供的一种基于MySQL的SQL解析器的解析方法的另一个实施例的流程示意图。
具体实施方式
本发明实施例提供的一种基于MySQL的SQL解析器及其解析方法,解决了目前的词法和语法分析工具,均由于不支持MySQL特有的SQL语句、无法实现通过注释扩展其功能,导致的数据分析过程的复杂性的技术问题。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1,本发明实施例提供的一种基于MySQL的SQL解析器的一个实施例包括:
词法分析器11、语法分析器12和语法树分析器13;
其中,词法分析器11将获取到的字符流进行MySQL语言词法分析,输出MySQL语言对应的记号流到语法分析器12进行MySQL语言对应的语法片段分析,输出语法片段对应的语法树给语法树分析器13进行分析。
本实施例中,通过词法分析器11将获取到的字符流进行MySQL语言词法分析,输出MySQL语言对应的记号流到语法分析器12进行MySQL语言对应的语法片段分析,输出语法片段对应的语法树给语法树分析器13进行分析,实现了基于Antlr自定义的MySQLSQL解析器,自定义词法和语法,实现对MySQL特有方言的支持,此外对SQL注释进行词法和语法解析,可以通过注释实现复杂性功能,解决了目前的词法和语法分析工具,均由于不支持MySQL特有的SQL语句、无法实现通过注释扩展其功能,导致的数据分析过程的复杂性的技术问题。
上面是对基于MySQL的SQL解析器的各分析器进行详细的描述,下面将对各模块进行详细的描述,请参阅图2,本发明实施例提供的一种基于MySQL的SQL解析器的另一个实施例包括:
词法分析器11、语法分析器12和语法树分析器13;
其中,词法分析器11将获取到的字符流进行MySQL语言词法分析,输出MySQL语言对应的记号流到语法分析器12进行MySQL语言对应的语法片段分析,输出语法片段对应的语法树给语法树分析器13进行分析。
进一步地,词法分析器11包括TOKENS标记识别模块111,用于进行MySQL语言词法分析。
进一步地,语法分析器12包括:
SELECT片段识别模块121,用于识别SELECT语法;
DELETE片段识别模块122,用于识别DELETE语法;
UPDATE片段识别模块123,用于识别UPDATE语法;
INSERT片段识别模块124,用于识别INSERT语法。
进一步地,语法树分析器13,用于根据获取到语法树形成分析辅助,输出与MySQL语言对应的标准SQL识别语言。
进一步地,语法树分析器13包括:
SELECT语法树识别模块131,用于识别SELECT语法树;
DELETE语法树识别模块132,用于识别DELETE语法树;
UPDATE语法树识别模块133,用于识别UPDATE语法树;
INSERT语法树识别模块134,用于识别INSERT语法树。
进一步地,TOKENS标记识别模块111包括MAX标记、MIN标记、AVG标记、SUM标记、COUNT标记、OR标记、SELECT标记、SET标记、UPDATE标记、WHERE标记、LEFT标记、RIGHT标记、INNER标记、CROSS标记、OUTER标记、JOIN标记。
下面将对词法、语法和语法树的定义进行描述,应用例包括:
1.定义词法和语法TOKENS(标记):主要用于进行词法识别。
MAX="max";
MIN="min";
AVG="avg";
SUM="sum";
COUNT="count";
OR="or";
SELECT="select";
SET="set";
UPDATE="update";
WHERE="where";
LEFT="left";
RIGHT="right";
INNER="inner";
CROSS="cross";
OUTER="outer";
JOIN="join";
2.定义词法和语法FRAGMENT(片段):主要用于进行语法识别。
2.1SELECT:用于识别SELECT语法。
2.2DELETE:用于识别DELETE语法。
deleteClause
:DELETE^FROM!IDENT
2.3UPDATE:用于识别UPDATE语法。
updateClause
:UPDATE^aliasedExpression
2.4INSERT:用于识别INSERT语法。
3.定义语法树FRAGMENT:主要用于根据语法树形成辅助方法。
3.1SELECT:用于识别SELECT语法树。
3.2DELETE:用于识别DELETE语法树。
3.3UPDATE:用于识别UPDATE语法树。
3.4INSERT:用于识别INSERT语法树。
与现有技术相比优点是既支持标准的SQL语句,还扩展支持MySQL特有的SQL语句,例如:“ONDUPLICATEKEYUPDATE”,本发明自定义了词法和语法规则,特别针对MySQL方言进行了特殊处理。
此外,业界内的其他实现方案对SQL注释不进行特殊处理,本发明由于定制化需要,所以对SQL注释进行特殊分析和处理,识别一些自定义注释语法,例如:“/*hintforce_read*/”。
不同的数据库,在sql语句的设计上是存在差异的,类似于现实生活中的各、方言,有一些是无法通用的词汇。在使用mysql的时候,为了使用相关功能,不可避免会涉及到方言的使用,而且作为底层技术来说,理论上应该无条件支持mysql所有API,而不能考虑是不是可以要求不使用该方言。在遇到mysql特有方言时,MYSQLSQL解析器会翻译该语言为标准SQL能识别的语义,从而是该方言可以像标准语言一样来使用,基于上述原因,现有技术并不适用,所以要定义词法和语法。
解析的结果可以作为多种功能的入口,例如分库分表,数据总线等等,解析的过程严格遵循语法树的规则,逐个单词翻译词法以及整体翻译语法同时进行,类似于英文翻译成中文的过程。
本实施例中,通过词法分析器11将获取到的字符流进行MySQL语言词法分析,输出MySQL语言对应的记号流到语法分析器12进行MySQL语言对应的语法片段分析,输出语法片段对应的语法树给语法树分析器13进行分析,实现了基于Antlr自定义的MySQLSQL解析器,自定义词法和语法,实现对MySQL特有方言的支持,此外对SQL注释进行词法和语法解析,可以通过注释实现复杂性功能,解决了目前的词法和语法分析工具,均由于不支持MySQL特有的SQL语句,导致的数据分析过程的复杂性的技术问题,以及并解决了现有的词法和语法分析工具不支持MySQL特有的SQL语句、无法实现通过注释扩展其功能的技术问题。
请参阅图3,本发明实施例中提供的一种基于MySQL的SQL解析器的解析方法的一个实施例包括:
301、通过词法分析器将获取到的字符流进行MySQL语言词法分析,并输出MySQL语言对应的记号流到语法分析器;
本实施例中,当需要对MySQLSQL语句进行词法分析、语法分析,生成语法树,并最终生成辅助类,便于获取MySQLSQL语句中的表、字段、查询条件等信息,此外还可以对MySQLSQL语句进行改写的时候,首先需要通过词法分析器将获取到的字符流进行MySQL语言词法分析,并输出MySQL语言对应的记号流到语法分析器。
302、通过语法分析器进行MySQL语言对应的语法片段分析,并输出语法片段对应的语法树给语法树分析器进行分析。
当通过词法分析器将获取到的字符流进行MySQL语言词法分析,并输出MySQL语言对应的记号流到语法分析器之后,需要通过语法分析器进行MySQL语言对应的语法片段分析,并输出语法片段对应的语法树给语法树分析器进行分析。
本实施例中,通过词法分析器将获取到的字符流进行MySQL语言词法分析,并输出MySQL语言对应的记号流到语法分析器,通过语法分析器进行MySQL语言对应的语法片段分析,并输出语法片段对应的语法树给语法树分析器进行分析,实现了基于Antlr自定义的MySQLSQL解析器,自定义词法和语法,实现对MySQL特有方言的支持,此外对SQL注释进行词法和语法解析,可以通过注释实现复杂性功能,解决了目前的词法和语法分析工具,均由于不支持MySQL特有的SQL语句、无法实现通过注释扩展其功能,导致的数据分析过程的复杂性的技术问题。
上面是对基于MySQL的SQL解析器的解析方法的过程进行详细的描述,下面将对附加过程进行详细的描述,请参阅图4,本发明实施例中提供的一种基于MySQL的SQL解析器的解析方法的另一个实施例包括:
401、建立词法分析器,进行TOKENS标记的定义;
本实施例中,当需要对MySQLSQL语句进行词法分析、语法分析,生成语法树,并最终生成辅助类,便于获取MySQLSQL语句中的表、字段、查询条件等信息,此外还可以对MySQLSQL语句进行改写之前,首先需要建立词法分析器,进行TOKENS标记的定义。
TOKENS标记包括MAX标记、MIN标记、AVG标记、SUM标记、COUNT标记、OR标记、SELECT标记、SET标记、UPDATE标记、WHERE标记、LEFT标记、RIGHT标记、INNER标记、CROSS标记、OUTER标记和JOIN标记。
402、建立语法分析器,进行与MySQL语言对应的片段定义;
当步骤401的同时、之前或之后,需要建立语法分析器,进行与MySQL语言对应的片段定义。
片段包括SELECT语法、DELETE语法、UPDATE语法和INSERT语法。
403、建立语法树分析器,进行与片段对应的语法树的定义;
当步骤401和402的同时、之前或之后,需要建立语法树分析器,进行与片段对应的语法树的定义。
语法树包括SELECT语法树、DELETE语法树、UPDATE语法树和INSERT语法树。
404、通过词法分析器将获取到的字符流进行MySQL语言词法分析,并输出MySQL语言对应的记号流到语法分析器;
本实施例中,当需要对MySQLSQL语句进行词法分析、语法分析,生成语法树,并最终生成辅助类,便于获取MySQLSQL语句中的表、字段、查询条件等信息,此外还可以对MySQLSQL语句进行改写的时候,步骤401至403之后,需要通过词法分析器将获取到的字符流进行MySQL语言词法分析,并输出MySQL语言对应的记号流到语法分析器。
405、通过语法分析器进行MySQL语言对应的语法片段分析,并输出语法片段对应的语法树给语法树分析器进行分析。
当通过词法分析器将获取到的字符流进行MySQL语言词法分析,并输出MySQL语言对应的记号流到语法分析器之后,需要通过语法分析器进行MySQL语言对应的语法片段分析,并输出语法片段对应的语法树给语法树分析器进行分析。
本实施例中,通过词法分析器将获取到的字符流进行MySQL语言词法分析,并输出MySQL语言对应的记号流到语法分析器,通过语法分析器进行MySQL语言对应的语法片段分析,并输出语法片段对应的语法树给语法树分析器进行分析,实现了基于Antlr自定义的MySQLSQL解析器,自定义词法和语法,实现对MySQL特有方言的支持,此外对SQL注释进行词法和语法解析,可以通过注释实现复杂性功能,解决了目前的词法和语法分析工具,均由于不支持MySQL特有的SQL语句,导致的数据分析过程的复杂性的技术问题,以及并解决了现有的词法和语法分析工具不支持MySQL特有的SQL语句、无法实现通过注释扩展其功能的技术问题。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种基于MySQL的SQL解析器,其特征在于,包括:
词法分析器、语法分析器和语法树分析器;
其中,所述词法分析器将获取到的字符流进行MySQL语言词法分析,输出所述MySQL语言对应的记号流到所述语法分析器进行MySQL语言对应的语法片段分析,输出所述语法片段对应的语法树给所述语法树分析器进行分析。
2.根据权利要求1所述的基于MySQL的SQL解析器,其特征在于,所述词法分析器包括TOKENS标记识别模块,用于进行所述MySQL语言词法分析。
3.根据权利要求2所述的基于MySQL的SQL解析器,其特征在于,所述语法分析器包括:
SELECT片段识别模块,用于识别SELECT语法;
DELETE片段识别模块,用于识别DELETE语法;
UPDATE片段识别模块,用于识别UPDATE语法;
INSERT片段识别模块,用于识别INSERT语法。
4.根据权利要求3所述的基于MySQL的SQL解析器,其特征在于,所述语法树分析器,用于根据获取到所述语法树形成分析辅助,输出与所述MySQL语言对应的标准SQL识别语言。
5.根据权利要求4所述的基于MySQL的SQL解析器,其特征在于,所述语法树分析器包括:
SELECT语法树识别模块,用于识别SELECT语法树;
DELETE语法树识别模块,用于识别DELETE语法树;
UPDATE语法树识别模块,用于识别UPDATE语法树;
INSERT语法树识别模块,用于识别INSERT语法树。
6.根据权利要求2至5中任意一项所述的基于MySQL的SQL解析器,其特征在于,所述TOKENS标记识别模块包括MAX标记、MIN标记、AVG标记、SUM标记、COUNT标记、OR标记、SELECT标记、SET标记、UPDATE标记、WHERE标记、LEFT标记、RIGHT标记、INNER标记、CROSS标记、OUTER标记、JOIN标记。
7.一种基于MySQL的SQL解析器的解析方法,其特征在于,包括:
通过词法分析器将获取到的字符流进行MySQL语言词法分析,并输出所述MySQL语言对应的记号流到语法分析器;
通过所述语法分析器进行MySQL语言对应的语法片段分析,并输出语法片段对应的语法树给语法树分析器进行分析。
8.根据权利要求7所述的基于MySQL的SQL解析器的解析方法,其特征在于,词法分析器将获取到的字符流进行MySQL语言词法分析,并输出所述MySQL语言对应的记号流到语法分析器之前还包括:
建立所述词法分析器,进行TOKENS标记的定义;
建立所述语法分析器,进行与所述MySQL语言对应的片段定义;
建立语法树分析器,进行与所述片段对应的语法树的定义。
9.根据权利要求8所述的基于MySQL的SQL解析器的解析方法,其特征在于,所述TOKENS标记包括MAX标记、MIN标记、AVG标记、SUM标记、COUNT标记、OR标记、SELECT标记、SET标记、UPDATE标记、WHERE标记、LEFT标记、RIGHT标记、INNER标记、CROSS标记、OUTER标记和JOIN标记。
10.根据权利要求9所述的基于MySQL的SQL解析器的解析方法,其特征在于,所述片段包括SELECT语法、DELETE语法、UPDATE语法和INSERT语法;
所述语法树包括SELECT语法树、DELETE语法树、UPDATE语法树和INSERT语法树。
CN201610107393.5A 2016-02-26 2016-02-26 一种基于MySQL的SQL解析器及其解析方法 Pending CN105787044A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610107393.5A CN105787044A (zh) 2016-02-26 2016-02-26 一种基于MySQL的SQL解析器及其解析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610107393.5A CN105787044A (zh) 2016-02-26 2016-02-26 一种基于MySQL的SQL解析器及其解析方法

Publications (1)

Publication Number Publication Date
CN105787044A true CN105787044A (zh) 2016-07-20

Family

ID=56403806

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610107393.5A Pending CN105787044A (zh) 2016-02-26 2016-02-26 一种基于MySQL的SQL解析器及其解析方法

Country Status (1)

Country Link
CN (1) CN105787044A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107818100A (zh) * 2016-09-12 2018-03-20 杭州海康威视数字技术股份有限公司 一种sql语句执行方法及装置
CN108255837A (zh) * 2016-12-28 2018-07-06 中国移动通信集团浙江有限公司 一种sql解析器及方法
CN109241104A (zh) * 2018-10-12 2019-01-18 北京聚云位智信息科技有限公司 决策型分布式数据库系统中aisql的解析器及其实现方法
CN109597624A (zh) * 2018-12-06 2019-04-09 魏明伟 一种sql格式化的方法
CN110019335A (zh) * 2017-10-17 2019-07-16 航天信息股份有限公司 一种基于注解对sql查询语句进行动态扩展的方法及系统
CN110019291A (zh) * 2017-09-04 2019-07-16 中国移动通信集团浙江有限公司 一种sql解析方法和sql解析器
CN111221846A (zh) * 2020-01-06 2020-06-02 广州拉卡拉信息技术有限公司 一种sql语句的自动翻译方法及装置
CN115757339A (zh) * 2022-11-16 2023-03-07 恒辉信达技术有限公司 Oracle脚本自动转Postgresql脚本方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103778185A (zh) * 2013-12-27 2014-05-07 北京天融信软件有限公司 一种用于数据库审计系统的sql语句解析方法和系统
CN104252357A (zh) * 2013-11-05 2014-12-31 深圳市华傲数据技术有限公司 一种sql语言解析方法和装置
CN104252510A (zh) * 2013-11-05 2014-12-31 深圳市华傲数据技术有限公司 一种sql语言翻译方法和装置
CN105335366A (zh) * 2014-05-30 2016-02-17 北大方正信息产业集团有限公司 一种sql语句处理方法、装置和服务器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104252357A (zh) * 2013-11-05 2014-12-31 深圳市华傲数据技术有限公司 一种sql语言解析方法和装置
CN104252510A (zh) * 2013-11-05 2014-12-31 深圳市华傲数据技术有限公司 一种sql语言翻译方法和装置
CN103778185A (zh) * 2013-12-27 2014-05-07 北京天融信软件有限公司 一种用于数据库审计系统的sql语句解析方法和系统
CN105335366A (zh) * 2014-05-30 2016-02-17 北大方正信息产业集团有限公司 一种sql语句处理方法、装置和服务器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ALIBABA: "Druid", 《HTTP://GITHUB.COM/ALIBABA/DRUID/TREE/REVERT-766-REVERT-760-DEV》 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107818100A (zh) * 2016-09-12 2018-03-20 杭州海康威视数字技术股份有限公司 一种sql语句执行方法及装置
CN107818100B (zh) * 2016-09-12 2019-12-20 杭州海康威视数字技术股份有限公司 一种sql语句执行方法及装置
CN108255837A (zh) * 2016-12-28 2018-07-06 中国移动通信集团浙江有限公司 一种sql解析器及方法
CN110019291A (zh) * 2017-09-04 2019-07-16 中国移动通信集团浙江有限公司 一种sql解析方法和sql解析器
CN110019335A (zh) * 2017-10-17 2019-07-16 航天信息股份有限公司 一种基于注解对sql查询语句进行动态扩展的方法及系统
CN110019335B (zh) * 2017-10-17 2021-05-28 航天信息股份有限公司 一种基于注解对sql查询语句进行动态扩展的方法及系统
CN109241104A (zh) * 2018-10-12 2019-01-18 北京聚云位智信息科技有限公司 决策型分布式数据库系统中aisql的解析器及其实现方法
CN109241104B (zh) * 2018-10-12 2021-11-02 北京聚云位智信息科技有限公司 决策型分布式数据库系统中aisql的解析器及其实现方法
CN109597624A (zh) * 2018-12-06 2019-04-09 魏明伟 一种sql格式化的方法
CN111221846A (zh) * 2020-01-06 2020-06-02 广州拉卡拉信息技术有限公司 一种sql语句的自动翻译方法及装置
CN111221846B (zh) * 2020-01-06 2023-09-29 广州拉卡拉信息技术有限公司 一种sql语句的自动翻译方法及装置
CN115757339A (zh) * 2022-11-16 2023-03-07 恒辉信达技术有限公司 Oracle脚本自动转Postgresql脚本方法

Similar Documents

Publication Publication Date Title
CN105787044A (zh) 一种基于MySQL的SQL解析器及其解析方法
CA3115268C (en) Determining levels of detail for data visualizations using natural language constructs
WO2019232991A1 (zh) 将会议语音识别为文本的方法、电子设备及存储介质
CN105335133B (zh) 用于生成业务规则模型的方法和装置
CN103294666A (zh) 语法编译方法、语义解析方法以及对应装置
CN103020044A (zh) 一种机器辅助网页翻译方法及其系统
WO2017166626A1 (zh) 归一化方法、装置和电子设备
Thi et al. Building a treebank for Vietnamese dependency parsing
Schmidek et al. Improving Open Relation Extraction via Sentence Re-Structuring.
CN107038163A (zh) 一种面向海量互联网信息的文本语义建模方法
CN105243056A (zh) 一种基于标点符号处理的汉语句法分析方法及装置
CN113076748A (zh) 弹幕敏感词的处理方法、装置、设备及存储介质
Kumar et al. Sanskrit compound processor
US20130024403A1 (en) Automatically induced class based shrinkage features for text classification
Sitaula A hybrid algorithm for stemming of Nepali text
Nooralahzadeh et al. Part of speech tagging for french social media data
Huang et al. Words without boundaries: Computational approaches to Chinese word segmentation
CN1808427A (zh) 专利信息检索的语法转换方法
Sajjad et al. Comparing two techniques for learning transliteration models using a parallel corpus
CN102209279A (zh) 基于xml的多语言支持方法
US20240169150A1 (en) Foreign language phrases learning system based on basic sentence pattern unit decomposition
CN107168950B (zh) 一种基于双语语义映射的事件短语学习方法及装置
Pathak et al. Reduplication in Assamese: Identification and modeling
CN110147396A (zh) 一种映射关系生成方法及装置
US10853559B2 (en) Symmetric text replacement

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20160720