CN104252510A - 一种sql语言翻译方法和装置 - Google Patents
一种sql语言翻译方法和装置 Download PDFInfo
- Publication number
- CN104252510A CN104252510A CN201310538511.4A CN201310538511A CN104252510A CN 104252510 A CN104252510 A CN 104252510A CN 201310538511 A CN201310538511 A CN 201310538511A CN 104252510 A CN104252510 A CN 104252510A
- Authority
- CN
- China
- Prior art keywords
- sql
- syntax tree
- grammar rule
- database
- command
- 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
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种SQL语言翻译方法,包括:获取用户输入的SQL命令;解析所述SQL命令获得语法树;根据所属数据库文法规则编译所述语法树得到对应数据库文法规则的命令。本发明实施例还提供了对应的装置。本发明实施例通过将用户输入的SQL命令解析后按照数据库对应文法规则编译,形成可被对应数据库管理系统识别的查询命令,实现了一种SQL语言被多种数据库管理系统识别。
Description
技术领域
本申请涉及数据库管理技术领域,特别是涉及一种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命令。
在本发明实施例中,用户即数据库管理员可以直接按照自己熟悉的数据库种类的方言向获取模块21输入SQL命令。
抽象语法树是对SQL命令的的抽象描述,是解析模块22对SQL命令实际要求的操作的一种理解。
编译模块23生成特定数据库厂商需要的方言SQL命令,这是一个翻译过程,动态(运行时)进行。首先根据所对接的数据库管理系统获取到该数据库管理系统对应的文法规则,也就是该数据库管理系统的方言表达方式,然后根据该文法规则对解析出来的逻辑语法树进行重新编译获得新的方言SQL命令。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
以上对本申请所提供的一种SQL语言翻译方法和装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (8)
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所述的装置,其特征在于,所述编译模块还包括:
规则获取模块,用于获取所述数据库文法规则;
编译子模块,用于按照所述文法规则编译语法树获得符合对应数据库文法规则的命令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310538511.4A CN104252510A (zh) | 2013-11-05 | 2013-11-05 | 一种sql语言翻译方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310538511.4A CN104252510A (zh) | 2013-11-05 | 2013-11-05 | 一种sql语言翻译方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104252510A true CN104252510A (zh) | 2014-12-31 |
Family
ID=52187403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310538511.4A Pending CN104252510A (zh) | 2013-11-05 | 2013-11-05 | 一种sql语言翻译方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104252510A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105787044A (zh) * | 2016-02-26 | 2016-07-20 | 广州品唯软件有限公司 | 一种基于MySQL的SQL解析器及其解析方法 |
CN106844380A (zh) * | 2015-12-04 | 2017-06-13 | 阿里巴巴集团控股有限公司 | 一种数据库操作方法、信息处理方法和相应装置 |
CN106909673A (zh) * | 2017-03-01 | 2017-06-30 | 国电南瑞科技股份有限公司 | 一种遵循数据库接口标准的数据存储模块的实现方法 |
CN107229616A (zh) * | 2016-03-25 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 语言识别方法、装置及系统 |
CN108388646A (zh) * | 2018-02-28 | 2018-08-10 | 弘成科技发展有限公司 | 一种能够保证sql完整性且能动态变动的方法 |
CN110990016A (zh) * | 2019-11-29 | 2020-04-10 | 浪潮商用机器有限公司 | Linux操作系统的命令获取方法、装置、设备及页面 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1388793A2 (en) * | 2002-08-09 | 2004-02-11 | Joint Technology Corporation | Method for transforming SQL queries |
CN101158975A (zh) * | 2007-11-21 | 2008-04-09 | 金蝶软件(中国)有限公司 | 一种访问不同类型数据库的方法和系统 |
CN101499093A (zh) * | 2009-03-05 | 2009-08-05 | 国电南瑞科技股份有限公司 | 一种监控系统内存数据库通用交互方法 |
CN101788992A (zh) * | 2009-05-06 | 2010-07-28 | 厦门东南融通系统工程有限公司 | 一种数据库查询语句的转换方法和转换系统 |
CN102073490A (zh) * | 2009-11-25 | 2011-05-25 | 阿里巴巴集团控股有限公司 | 转译数据库语言的方法及装置 |
-
2013
- 2013-11-05 CN CN201310538511.4A patent/CN104252510A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1388793A2 (en) * | 2002-08-09 | 2004-02-11 | Joint Technology Corporation | Method for transforming SQL queries |
CN101158975A (zh) * | 2007-11-21 | 2008-04-09 | 金蝶软件(中国)有限公司 | 一种访问不同类型数据库的方法和系统 |
CN101499093A (zh) * | 2009-03-05 | 2009-08-05 | 国电南瑞科技股份有限公司 | 一种监控系统内存数据库通用交互方法 |
CN101788992A (zh) * | 2009-05-06 | 2010-07-28 | 厦门东南融通系统工程有限公司 | 一种数据库查询语句的转换方法和转换系统 |
CN102073490A (zh) * | 2009-11-25 | 2011-05-25 | 阿里巴巴集团控股有限公司 | 转译数据库语言的方法及装置 |
Non-Patent Citations (1)
Title |
---|
祝定泽 等: "《MySQL 核心内幕》", 31 January 2010 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844380A (zh) * | 2015-12-04 | 2017-06-13 | 阿里巴巴集团控股有限公司 | 一种数据库操作方法、信息处理方法和相应装置 |
CN105787044A (zh) * | 2016-02-26 | 2016-07-20 | 广州品唯软件有限公司 | 一种基于MySQL的SQL解析器及其解析方法 |
CN107229616A (zh) * | 2016-03-25 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 语言识别方法、装置及系统 |
CN107229616B (zh) * | 2016-03-25 | 2020-10-16 | 阿里巴巴集团控股有限公司 | 语言识别方法、装置及系统 |
CN106909673A (zh) * | 2017-03-01 | 2017-06-30 | 国电南瑞科技股份有限公司 | 一种遵循数据库接口标准的数据存储模块的实现方法 |
CN108388646A (zh) * | 2018-02-28 | 2018-08-10 | 弘成科技发展有限公司 | 一种能够保证sql完整性且能动态变动的方法 |
CN110990016A (zh) * | 2019-11-29 | 2020-04-10 | 浪潮商用机器有限公司 | Linux操作系统的命令获取方法、装置、设备及页面 |
CN110990016B (zh) * | 2019-11-29 | 2023-08-29 | 浪潮商用机器有限公司 | Linux操作系统的命令获取方法、装置、设备及页面 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104252510A (zh) | 一种sql语言翻译方法和装置 | |
CN111382226B (zh) | 一种数据库查询检索方法、装置和电子设备 | |
CN107463632B (zh) | 一种分布式NewSQL数据库系统和数据查询方法 | |
CN104899295B (zh) | 一种异构数据源数据关联分析方法 | |
US20130138681A1 (en) | Method and system for metadata driven processing of federated data | |
CN103092998A (zh) | 数据查询系统和数据查询方法 | |
CN105138326B (zh) | 一种基于ibatis实现sql动态配置的方法及系统 | |
CN103020064A (zh) | 一种通过注解方式生成查询条件的方法和配置 | |
CN104123374A (zh) | 分布式数据库中聚合查询的方法及装置 | |
CN104216961B (zh) | 一种数据处理方法和装置 | |
CN103699638A (zh) | 一种基于配置参数实现跨数据库类型同步数据的方法 | |
US11366808B2 (en) | Query processing method, data source registration method, and query engine | |
CN103744651A (zh) | 一种面向业务需求的业务处理模型自动生成方法 | |
CN105335479A (zh) | 一种基于sql的文本数据统计实现方法 | |
CN102750354A (zh) | 一种非结构化数据查询操作语言的解析与处理方法 | |
CN104462351A (zh) | 一种面向MapReduce范型的数据查询模型与方法 | |
US20080195610A1 (en) | Adaptive query expression builder for an on-demand data service | |
CN105373621A (zh) | 一种快速的跨数据库系统的数据增量迁移方法 | |
CN111414378B (zh) | 一种基于GraphQL的类元数据框架 | |
CN103678396B (zh) | 一种基于数据模型的数据备份方法和装置 | |
CN116955399A (zh) | 基于Calcite的统一SQL查询方法、系统及介质 | |
CN115544062A (zh) | 基于Apache Calcite数据血缘和影响分析的方法及系统 | |
CN104252511A (zh) | 一种sql命令编译方法和装置 | |
CN103593182A (zh) | 一种采用聚类方式进行软件重构的方法 | |
CN104252357A (zh) | 一种sql语言解析方法和装置 |
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: 20141231 |