一种sql语言翻译方法和装置制造方法

文档序号:6517797阅读:135来源:国知局
一种sql语言翻译方法和装置制造方法
【专利摘要】本申请提供了一种SQL语言翻译方法,包括:获取用户输入的SQL命令;解析所述SQL命令获得语法树;根据所属数据库文法规则编译所述语法树得到对应数据库文法规则的命令。本发明实施例还提供了对应的装置。本发明实施例通过将用户输入的SQL命令解析后按照数据库对应文法规则编译,形成可被对应数据库管理系统识别的查询命令,实现了一种SQL语言被多种数据库管理系统识别。
【专利说明】 —种SQL语言翻译方法和装置

【技术领域】
[0001]本申请涉及数据库管理【技术领域】,特别是涉及一种SQL语言翻译方法和装置。

【背景技术】
[0002]数据库管理系统有多个种类,例如ORACLE、SQL Server、MySQL、PostgreSQL、DB2、Sybase、Teradata和SQLite ;对数据库的查询可以采用SQL命令进行查询,该SQL有统一标准,但是各个数据库管理系统并未严格遵守该标准,导致在某些细节上在其中一个数据库管理系统中可被识别的SQL命令,在其它数据库管理系统中不被识别。
[0003]为了解决这个问题,数据库管理员如果需要管理多个种类的数据库,则必须对各个被管理的数据库管理系统都有了解,否则会出现管理用输入例如针对ORACLE系统的SQL命令被DB2系统不识别,从而不能工作的情况。而管理员如果需要针对DB2进行查询则必须对DB2的语法规范进行了解。造成了操作不便,管理相对繁琐。


【发明内容】

[0004]本申请所要解决的技术问题是提供一种可以通过一种SQL命令查询多个种类数据库的SQL语言翻译方法。
[0005]相应的,本申请还提供了针对上述SQL语言翻译方法的装置。
[0006]为了解决上述问题,本申请公开了一种SQL语言翻译方法,包括:
获取用户输入的SQL命令;
解析所述SQL命令获得语法树;
根据所属数据库文法规则编译所述语法树得到对应数据库文法规则的命令。
[0007]进一步,所述获取用户输入的SQL命令包括:
获取用户按照SQL语言规则输入的数据库查询命令。
[0008]进一步,所述解析SQL命令获得语法树包括:
采用自顶向下方式或自底向上方式解析SQL命令,获得语法树。
[0009]进一步,所述根据所属数据库文法规则编译所述语法树得到对应数据库文法规则的命令包括:
获取所述数据库文法规则;
按照所述文法规则编译语法树获得符合对应数据库文法规则的命令。
[0010]本申请还提供了对应的一种SQL语言翻译装置,包括:
获取模块,用于获取用户输入的SQL命令;
解析模块,用于解析所述SQL命令获得语法树;
编译模块,用于根据所属数据库文法规则编译所述语法树得到对应数据库文法规则的命令。
[0011]进一步,所述获取模块还用于:
获取用户按照SQL语言规则输入的数据库查询命令。
[0012]进一步,所述解析模块还用于:
采用自顶向下方式或自底向上方式解析SQL命令,获得语法树。
[0013]进一步,所述编译模块还包括:
规则获取模块,用于获取所述数据库文法规则;
编译子模块,用于按照所述文法规则编译语法树获得符合对应数据库文法规则的命令。
[0014]与现有技术相比,本申请包括以下优点:通过将用户输入的SQL命令解析后按照数据库对应文法规则编译,形成可被对应数据库管理系统识别的查询命令,实现了一种SQL语言被多种数据库管理系统识别。
[0015]

【专利附图】

【附图说明】
图1是本发明一种SQL语言翻译方法一实施例的流程图;
图2是本发明一种SQL语言翻译装置一实施例的结构示意图。

【具体实施方式】
[0016]为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本申请作进一步详细的说明。
[0017]参照图1,示出了本申请一种SQL语言翻译方法一实施例的流程图。
[0018]本发明实施例提供的一种SQL语言翻译方法,包括:
步骤S101、获取用户输入的SQL命令;
进一步,所述获取用户输入的SQL命令包括:
获取用户按照SQL语言规则输入的数据库查询命令。
[0019]由于数据库管理系统有多个厂家形成的多个种类,例如ORACLE、SQL Server、MySQL、PostgreSQL、DB2、Sybase、Teradata和SQLite等,虽然各个数据库管理系统都支持SQL命令,但是各个数据库管理系统都有各自的不同点,也既是类似于通用语和方言的意思,各个数据库管理系统虽然都支持通用的SQL标准命令(通用语),但也形成了各自的独特表述也既是各种类数据库管理系统的方言SQL。一般情况下,某一个数据库管理员仅仅会针对一个到两个种类的数据库管理系统比较熟悉,相应的该数据库管理员熟悉的SQL命令也多半是标准的SQL命令或者其所熟悉的数据库类型对应的方言SQL命令。
[0020]在本发明实施例中,用户即数据库管理员可以直接按照自己熟悉的数据库种类的方言输入SQL命令。
[0021 ] 步骤S102、解析所述SQL命令获得语法树;
进一步,所述解析SQL命令获得语法树包括:
采用自顶向下方式或自底向上方式解析SQL命令,获得语法树。
[0022]步骤S102中,抽象语法树是对SQL命令的的抽象描述,是对SQL命令实际要求的操作的一种理解。
[0023]步骤S103、根据所属数据库文法规则编译所述语法树得到对应数据库文法规则的命令。
[0024]进一步,所述根据所属数据库文法规则编译所述语法树得到对应数据库文法规则的命令包括: 获取所述数据库文法规则;
按照所述文法规则编译语法树获得符合对应数据库文法规则的命令。
[0025]生成特定数据库厂商需要的方言SQL命令,这是一个翻译过程,动态(运行时)进行。首先根据所对接的数据库管理系统获取到该数据库管理系统对应的文法规则,也就是该数据库管理系统的方言表达方式,然后根据该文法规则对解析出来的逻辑语法树进行重新编译获得新的方目SQL命令。
[0026]本发明实施例通过将用户输入的SQL命令解析后按照数据库对应文法规则编译,形成可被对应数据库管理系统识别的查询命令,实现了一种SQL语言被多种数据库管理系统识别。
[0027]参照图2为本发明一种一种SQL语言翻译装置一实施例的结构示意图。
[0028]本申请提供的一种SQL语言翻译装置,包括:
获取模块21,用于获取用户输入的SQL命令;
解析模块22,用于解析所述SQL命令获得语法树;
编译模块23,用于根据所属数据库文法规则编译所述语法树得到对应数据库文法规则的命令。
[0029]进一步,所述获取模块21还用于:
获取用户按照SQL语言规则输入的数据库查询命令。
[0030]进一步,所述解析模块22还用于:
采用自顶向下方式或自底向上方式解析SQL命令,获得语法树。
[0031]进一步,所述编译模块23还包括:
规则获取模块231,用于获取所述数据库文法规则;
编译子模块232,用于按照所述文法规则编译语法树获得符合对应数据库文法规则的命令。
[0032]由于数据库管理系统有多个厂家形成的多个种类,例如ORACLE、SQL Server、MySQL、PostgreSQL、DB2、Sybase、Teradata和SQLite等,虽然各个数据库管理系统都支持SQL命令,但是各个数据库管理系统都有各自的不同点,也既是类似于通用语和方言的意思,各个数据库管理系统虽然都支持通用的SQL标准命令(通用语),但也形成了各自的独特表述也既是各种类数据库管理系统的方言SQL。一般情况下,某一个数据库管理员仅仅会针对一个到两个种类的数据库管理系统比较熟悉,相应的该数据库管理员熟悉的SQL命令也多半是标准的SQL命令或者其所熟悉的数据库类型对应的方言SQL命令。
[0033]在本发明实施例中,用户即数据库管理员可以直接按照自己熟悉的数据库种类的方言向获取模块21输入SQL命令。
[0034]抽象语法树是对SQL命令的的抽象描述,是解析模块22对SQL命令实际要求的操作的一种理解。
[0035]编译模块23生成特定数据库厂商需要的方言SQL命令,这是一个翻译过程,动态(运行时)进行。首先根据所对接的数据库管理系统获取到该数据库管理系统对应的文法规则,也就是该数据库管理系统的方言表达方式,然后根据该文法规则对解析出来的逻辑语法树进行重新编译获得新的方言SQL命令。
[0036]对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0037]本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0038]以上对本申请所提供的一种SQL语言翻译方法和装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
【权利要求】
1.一种SQL语言翻译方法,其特征在于,包括: 获取用户输入的SQL命令; 解析所述SQL命令获得语法树; 根据所属数据库文法规则编译所述语法树得到对应数据库文法规则的命令。
2.根据权利要求1所述的方法,其特征在于,所述获取用户输入的SQL命令包括: 获取用户按照SQL语言规则输入的数据库查询命令。
3.根据权利要求1或2所述的方法,其特征在于,所述解析SQL命令获得语法树包括: 采用自顶向下方式或自底向上方式解析SQL命令,获得语法树。
4.根据权利要求3所述的方法,其特征在于,所述根据所属数据库文法规则编译所述语法树得到对应数据库文法规则的命令包括: 获取所述数据库文法规则; 按照所述文法规则编译语法树获得符合对应数据库文法规则的命令。
5.一种SQL语言翻译装置,其特征在于,包括: 获取模块,用于获取用户输入的SQL命令; 解析模块,用于解析所述SQL命令获得语法树; 编译模块,用于根据所属数据库文法规则编译所述语法树得到对应数据库文法规则的命令。
6.根据权利要求5所述的装置,其特征在于,所述获取模块还用于: 获取用户按照SQL语言规则输入的数据库查询命令。
7.根据权利要求5或6所述的装置,其特征在于,所述解析模块还用于: 采用自顶向下方式或自底向上方式解析SQL命令,获得语法树。
8.根据权利要求7所述的装置,其特征在于,所述编译模块还包括: 规则获取模块,用于获取所述数据库文法规则; 编译子模块,用于按照所述文法规则编译语法树获得符合对应数据库文法规则的命令。
【文档编号】G06F17/30GK104252510SQ201310538511
【公开日】2014年12月31日 申请日期:2013年11月5日 优先权日:2013年11月5日
【发明者】叶东, 贾西贝 申请人:深圳市华傲数据技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1