一种SQL语言解析方法和装置制造方法及图纸

技术编号:10846596 阅读:112 留言:0更新日期:2014-12-31 17:32
本申请提供了一种SQL语言解析方法,包括:获取用户输入的SQL命令;判断所述SQL命令的表达方式;对所述SQL命令中的表达式部分采用自底向上方式解析,对所述SQL命令中的修饰部分采用自顶向下方式解析;结合两部分解析获得所述SQL命令的抽象语法树。本发明专利技术还提供了对应的装置。本发明专利技术通过对SQL命令中不同的表达方式部分分别采用效率更高的解析方式,结合两种解析方式以更高效的完成SQL命令解析。

【技术实现步骤摘要】

 本申请涉及数据库管理
,特别是涉及一种SQL语言解析方法和装置
技术介绍
数据库管理系统有多个种类,例如ORACLE、SQL Server、MySQL、PostgreSQL、DB2、Sybase、Teradata和SQLite;对数据库的查询可以采用SQL命令进行查询,该SQL有统一标准,但是各个数据库管理系统并未严格遵守该标准,导致在某些细节上在其中一个数据库管理系统中可被识别的SQL命令,在其它数据库管理系统中不被识别。为了解决这个问题,数据库管理员如果需要管理多个种类的数据库,则必须对各个被管理的数据库管理系统都有了解,否则会出现管理用输入例如针对ORACLE系统的SQL命令被DB2系统不识别,从而不能工作的情况。而管理员如果需要针对DB2进行查询则必须对DB2的语法规范进行了解。造成了操作不便,管理相对繁琐。但从实际使用过程中可以得知,不管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语言解析方法一实施例的流程图;图2是本专利技术一种SQL语言解析装置一实施例的结构示意图。具体实施方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。参照图1,示出了本申请一种SQL语言解析方法,包括:步骤S101、获取用户输入的SQL命令;进一步,所述获取用户输入的SQL命令包括:获取用户输入的方言SQL命令。在本专利技术实施例中首先定义了一套比较折中的SQL语法方案,产品中用到的是这种SQL方案的SQL字符串。该语法方案可以是某一种数据库管理系统的方言,比如是DB2的方言,也可以是标准的SQL语言。步骤S102、判断所述SQL命令的表达方式;进一步,所述判断SQL命令的表达方式包括:判断所述SQL命令中的表达式部分和修饰部分。由于SQL语法的复杂性,可以采用“向前看”许多单词的方式,判断当前SQL是什么类型的语句 (DDL,DML,DQL)。步骤S103、对所述SQL命令中的表达式部分采用自底向上方式解析,对所述SQL命令中的修饰部分采用自顶向下方式解析;进一步,所述对SQL命令中的表达式部分采用自底向上方式解析,对SQL命令中的修饰部分采用自顶向下方式解析包括:对所述SQL命令中的表示运算的表达式部分采用自底向上方式解析,对所述SQL命令中的名词构成的修饰部分采用自顶向下方式解析。对SQL语句的解析采用自顶向下分析--LL(1);在使用LL(1)分析过程中,当碰到表达式,立即改成自底向上的基于算符优先分析。这两中方式的结合,有效的增加了分析器的灵活性,和代码的可维护性,    使得传统的任务编译这一不可接近的领域变的极其简洁、和维护。相对于使用Antlr来解析SQL2003,生成的代码有6万行之巨,和维护性差,灵活性无从谈起,而且无法国际化;现在使用本专利技术实施例,代码只有3000多行,简洁和维护,功能比之前更强。步骤S104、结合两部分解析获得所述SQL命令的抽象语法树。最后生成定义好的抽象语法树,进一步提供给校验模块使用,采用访问者模式,极大的提高了系统的可扩展性,在产品很多难点问题上,获得很好的解决。参照图2为本申请一种SQL语言解析装置一实施例的结构示意图;本申请提供一种SQL语言解析装置,包括:获取模块21,用于获取用户输入的SQL命令;判断模块22,用于判断所述SQL命令的表达方式;解析模块23,用于对所述SQL命令中的表达式部分采用自底向上方式解析,对所述SQL命令中的修饰部分采用自顶向下方式解析;生成模块24,用于结合两部分解析获得所述SQL命令的抽象语法树。进一步,所述获取模块21还用于:获取用户输入的方言SQL命令。进一步,所述判断模块22还用于:判断所述SQL命令中的表达式部分和修饰部分。进一步,所述解析模块23还用于:对对所述SQL命令中的表示运算的表达式部分采用自底向上方式解析,对所述SQL命令中的名词构成的修饰部分采用自顶向下方式解析。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。以上对本申请所提供的一种SQL语言解析方法和装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想本文档来自技高网...

【技术保护点】
一种SQL语言解析方法,其特征在于,包括:获取用户输入的SQL命令;判断所述SQL命令的表达方式;对所述SQL命令中的表达式部分采用自底向上方式解析,对所述SQL命令中的修饰部分采用自顶向下方式解析;结合两部分解析获得所述SQL命令的抽象语法树。

【技术特征摘要】
1.一种SQL语言解析方法,其特征在于,包括:
获取用户输入的SQL命令;
判断所述SQL命令的表达方式;
对所述SQL命令中的表达式部分采用自底向上方式解析,对所述SQL命令中的修饰部分采用自顶向下方式解析;
结合两部分解析获得所述SQL命令的抽象语法树。
2.根据权利要求1所述的方法,其特征在于,所述获取用户输入的SQL命令包括:
获取用户输入的方言SQL命令。
3.根据权利要求2所述的方法,其特征在于,所述判断SQL命令的表达方式包括:
判断所述SQL命令中的表达式部分和修饰部分。
4.根据权利要求3所述的方法,其特征在于,所述对SQL命令中的表达式部分采用自底向上方式解析,对SQL命令中的修饰部分采用自顶向下方式解析包括:
对对所述SQL命令中的表示运算的表达式部分采用自底向上方式解析,对所述SQL命令中的名词构成的修饰部分采用自...

【专利技术属性】
技术研发人员:叶东贾西贝
申请(专利权)人:深圳市华傲数据技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1