一种SQL语言翻译方法和装置制造方法及图纸

技术编号:10857376 阅读:154 留言:0更新日期:2015-01-01 08:42
本申请提供了一种SQL语言翻译方法,包括:获取用户输入的SQL命令;解析所述SQL命令获得语法树;根据所属数据库文法规则编译所述语法树得到对应数据库文法规则的命令。本发明专利技术实施例还提供了对应的装置。本发明专利技术实施例通过将用户输入的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语言被多种数据库管理系统识别。 【专利附图】【附图说明】图1是本专利技术一种SQL语言翻译方法一实施例的流程图;图2是本专利技术一种SQL语言翻译装置一实施例的结构示意图。 【具体实施方式】 为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本申请作进一步详细的说明。 参照图1,示出了本申请一种SQL语言翻译方法一实施例的流程图。 本专利技术实施例提供的一种SQL语言翻译方法,包括:步骤S101、获取用户输入的SQL命令;进一步,所述获取用户输入的SQL命令包括:获取用户按照SQL语言规则输入的数据库查询命令。 由于数据库管理系统有多个厂家形成的多个种类,例如ORACLE、SQL Server、MySQL、PostgreSQL、DB2、Sybase、Teradata和SQLite等,虽然各个数据库管理系统都支持SQL命令,但是各个数据库管理系统都有各自的不同点,也既是类似于通用语和方言的意思,各个数据库管理系统虽然都支持通用的SQL标准命令(通用语),但也形成了各自的独特表述也既是各种类数据库管理系统的方言SQL。一般情况下,某一个数据库管理员仅仅会针对一个到两个种类的数据库管理系统比较熟悉,相应的该数据库管理员熟悉的SQL命令也多半是标准的SQL命令或者其所熟悉的数据库类型对应的方言SQL命令。 在本专利技术实施例中,用户即数据库管理员可以直接按照自己熟悉的数据库种类的方言输入SQL命令。 步骤S102、解析所述SQL命令获得语法树;进一步,所述解析SQL命令获得语法树包括:采用自顶向下方式或自底向上方式解析SQL命令,获得语法树。 步骤S102中,抽象语法树是对SQL命令的的抽象描述,是对SQL命令实际要求的操作的一种理解。 步骤S103、根据所属数据库文法规则编译所述语法树得到对应数据库文法规则的命令。 进一步,所述根据所属数据库文法规则编译所述语法树得到对应数据库文法规则的命令包括: 获取所述数据库文法规则;按照所述文法规则编译语法树获得符合对应数据库文法规则的命令。 生成特定数据库厂商需要的方言SQL命令,这是一个翻译过程,动态(运行时)进行。首先根据所对接的数据库管理系统获取到该数据库管理系统对应的文法规则,也就是该数据库管理系统的方言表达方式,然后根据该文法规则对解析出来的逻辑语法树进行重新编译获得新的方目SQL命令。 本专利技术实施例通过将用户输入的SQL命令解析后按照数据库对应文法规则编译,形成可被对应数据库管理系统识别的查询命令,实现了一种SQL语言被多种数据库管理系统识别。 参照图2为本专利技术一种一种SQL语言翻译装置一实施例的结构示意图。 本申请提供的一种SQL语言翻译装置,包括:获取模块21,用于获取用户输入的SQL命令;解析模块22,用于解析所述SQL命令获得语法树;编译模块23,用于根据所属数据库文法规则编译所述语法树得到对应数据库文法规则的命令。 进一步,所述获取模块21还用于:获取用户按照SQL语言规则输入的数据库查询命令。 进一步,所述解析模块22还用于:采用自顶向下方式或自底向上方式解析SQL命令,获得语法树。 进一步,所述编译模块23还包括:规则获取模块231,用于获取所述数据库文法规则;编译子模块232,用于按照所述文法规则编译语法树获得符合对应数据库文法规则的命令。 由于数据库管理系统有多个厂家形成的多个种类,例如ORACLE、SQL Server、MySQL、PostgreSQL、DB2、Sybase、Teradata和SQLite等,虽然各个数据库管理系统都支持SQL命令,但是各个数据库管理系统都有各自的不同点,也既是类似于通用语和方言的意思,各个数据库管理系统虽然都支持通用的SQL标准命令(通用语),但也形成了各自的独特表述也既是各种类数据库管理系统的方言SQL。一般情况下,某一个数据库管理员仅仅会针对一个到两个种类的数据库管理系统比较熟悉,相应的该数据库管理员熟悉的SQL命令也多半是标准的SQL命令或者其所熟悉的数据库类型本文档来自技高网...

【技术保护点】
一种SQL语言翻译方法,其特征在于,包括:获取用户输入的SQL命令;解析所述SQL命令获得语法树;根据所属数据库文法规则编译所述语法树得到对应数据库文法规则的命令。

【技术特征摘要】

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

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

1