CN102073490B - 转译数据库语言的方法及装置 - Google Patents
转译数据库语言的方法及装置 Download PDFInfo
- Publication number
- CN102073490B CN102073490B CN 200910246314 CN200910246314A CN102073490B CN 102073490 B CN102073490 B CN 102073490B CN 200910246314 CN200910246314 CN 200910246314 CN 200910246314 A CN200910246314 A CN 200910246314A CN 102073490 B CN102073490 B CN 102073490B
- Authority
- CN
- China
- Prior art keywords
- sql
- database
- source
- code
- key word
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种转译数据库语言的方法及装置,所述方法预先设置并保存转译逻辑,包括:获取源SQL代码、源SQL数据库类型及目的SQL数据库类型;编译源SQL代码,得到源SQL代码中的关键字和语法逻辑;根据源SQL数据库类型和目的SQL数据库类型查找转译逻辑,获取与编译得到的关键字和语法逻辑对应的目的SQL数据库中对应的关键字和语法逻辑;按照目的SQL数据库中的语法逻辑组合获取的关键字及源SQL代码中除关键字外的其它代码,生成目的SQL代码。本申请可以根据转译逻辑将源SQL代码自动转译成目的SQL代码,而无需开发人员重新编写目的SQL代码,由此提高了数据库的开发效率,减轻了开发人员的负担。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种转译数据库语言的方法及装置。
背景技术
SQL(Structured Query Language,结构化查询语言)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。现有互联网中的数据库的种类众多,例如,用于日志处理的Greenplum数据库,用于业务数据的Teradata数据库等,在选择采用何种数据库时,通常需要综合数据需求和成本核算等进行数据库的选择,而对于不同类型的数据库,其所对应使用的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数据库中的语法逻辑组合所述获取的关键字及所述源SQL代码中除关键字外的其它代码,生成目的SQL代码。
可见,本申请实施例中预先设置并保存了转译逻辑,当获取源SQL代码、源SQL数据库类型及目的SQL数据库类型后,编译源SQL代码得到源SQL代码中的关键字和语法逻辑,根据源SQL数据库类型和目的SQL数据库类型查找转译逻辑,获取与编译得到的关键字和语法逻辑对应的目的SQL数据库中对应的关键字和语法逻辑,按照目的SQL数据库中的语法逻辑组合获取的关键字及源SQL代码中除关键字外的其它代码,生成目的SQL代码。本申请实施例中由于预先设置了关键字和语法逻辑的转译逻辑,因此对于不同数据库之间的SQL代码,可以根据这些转译逻辑将源SQL代码自动转译成目的SQL代码,而且,由于本申请可以批量读取源SQL代码并批量进行自动转译,因此,转译速度快捷,效率高。另外,本申请无需开发人员重新编写目的SQL代码,由此提高了数据库的开发效率,减轻了开发人员的负担。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请转译数据库语言的方法的第一实施例流程图;
图2为本申请转译数据库语言的方法的第二实施例流程图;
图3为本申请开发编译转译器及其应用的流程图;
图4为本申请转译数据库装置的第一实施例框图;
图5为本申请转译数据库装置的第二实施例框图。
具体实施方式
本申请实施例提供一种转译数据库语言的方法及装置。
为了使本技术领域的人员更好地理解本申请实施例中的技术方案,并使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中技术方案作进一步详细的说明。
异构数据库系统是相关的多个数据库系统的集合,可以实现数据的共享和透明访问,每个数据库系统在加入异构数据库系统之前本身就已经存在,拥有自己的DBMS(Database Management System,数据库管理系统)。异构数据库的各个组成部分具有自身的自治性,实现数据共享的同时,每个数据库系统仍保有自己的应用特性、完整性控制和安全性控制,并且,不同的数据库对SQL语法的支持程度各不相同,也就是说,访问不同数据库时需要使用不同的SQL代码,由于为不同数据库编写SQL代码将极大增加数据库开发人员的工作,并且当数据库对应的业务需求发生变化导致数据库发生改变时,则需要重新调整所有不同数据库的SQL代码;对于企业数据库开发人员来说,往往只精通某一种数据库SQL代码的编写,而不可能精通异构数据库系统中所有数据库SQL代码的编写,因此需要精通不同数据库SQL代码编写的多个数据库开发人员,由此也会增加企业的成本。
综合上述,本申请实施例在于实现跨异构数据库的SQL代码的开发,通过识别一种数据库的SQL代码,并通过预先设置的转译逻辑,将该数据库SQL代码自动转译为指定的另一种数据库的SQL代码,以节省数据库开发人员的工作。
参见图1,为本申请转译数据库语言的方法的第一实施例流程图:
步骤101:预先设置并保存转译逻辑。
转译逻辑中包括不同SQL数据库的同种关键字之间的对应关系,以及不同SQL数据库的同种语法逻辑之间的对应关系。
对于任何一种数据库的SQL代码来说,其都有固定的关键字,例如Oracle数据库中的select、where、while等,而这些关键字在其它数据库中虽然具有相同功能,但形式可能有所改变,因此需要将这些不同数据库中的同种功能的关键字之间的对应关系进行保存。
通常一个SQL语句中包括可以忽略的字符串,例如:空格、回车、换行符等,还包括前面提到的关键字以及以一些注释项等,由上述不同关键字串接起来的SQL语句都有其对应的固定语法结构,即由语法和动作组成的语法逻辑,而不同数据库对于同种功能的SQL语句的语法逻辑可能不同,因此也需要将这些不同数据库中的同种功能的SQL语句的语法逻辑之间的对应关系进行保存。
步骤102:获取源SQL代码、源SQL数据库类型及目的SQL数据库类型。
为了实现SQL代码的转换,通常会开发一个转译应用界面,通过该界面可以接收开发人员输入的源SQL代码,根据源SQL代码中的一些关键字或者语法逻辑就可以判断该源SQL代码所属的SQL数据库类型,或者直接由开发人员输入SQL数据库的类型,上述数据库类型作为源SQL数据库类型,并且可以同时接收开发人员输入的目的SQL数据库类型。
将通过应用界面获取的的源SQL代码、源SQL数据库类型和目的数据库类型进行保存,以进行后续的转译操作。本实施例在转译过程中可以批量获取源SQL代码中所有SQL语句,以便后续能够自动完成SQL语句的批量转译。
本申请实施例应用的异构数据库系统中的数据库类型可以包括:Postgress数据库、Mysql数据库、Sqlserver数据库、Oracle数据库、Informix数据库、Sybase数据库、Db2数据库。当然,本申请实施例也可以不局限于上述数据库,当有新的数据库类型时,可以通过更新转译逻辑的内容,加入该新的数据库类型的关键字和语法逻辑,将该新的数据库类型纳入本申请转译的范围。
步骤103:编译源SQL代码,得到源SQL代码中的关键字和语法逻辑。
通常,系统中可以预先设置词法文件和语法文件,词法文件中包括不同SQL数据库的关键字,语法文件中包括不同关键字的读取规则及对应的语法逻辑,异构数据库的所有语法文件和词法文件可以设置在一个文件中保存。
编译的过程就是依据上述语法文件中源SQL数据库类型对应的读取规则,对源SQL代码中每一条SQL语句进行分析的过程,在分析的过程中可以顺序从头读取每一个字符,根据空格、回车等位置提取关键字,通过分析可以得到该SQL代码中的关键字,并获得与提取关键字相应的语法逻辑。
步骤104:根据源SQL数据库类型和目的SQL数据库类型查找转译逻辑,获取与编译得到的关键字和语法逻辑对应的目的SQL数据库中对应的关键字和语法逻辑。
根据提取出来的源SQL代码的关键字和语法逻辑,查找预先保存的转译逻辑中的对应关系,得到与源SQL代码中的关键字对应的目的SQL代码的关键字,以及与源SQL代码的语法逻辑对应的目的SQL代码的语法逻辑。
步骤105:按照目的SQL数据库中的语法逻辑组合获取的关键字及源SQL代码中除关键字外的其它代码,生成目的SQL代码,结束当前流程。
本申请实施例可以对获取到的多条源SQL代码中的语句进行自动转译,从而提高SQL语句的转译速度。
参见图2,为本申请转译数据库语言的方法的第二实施例流程图:
步骤201:预先设置并保存转译逻辑。
转译逻辑中包括不同SQL数据库的同种关键字之间的对应关系,以及不同SQL数据库的同种语法逻辑之间的对应关系。
对于任何一种数据库的SQL代码来说,其都有固定的关键字,例如Oracle数据库中的select、where、while等,而这些关键字在其它数据库中虽然具有相同功能,但形式可能有所改变,因此需要将这些不同数据库中的同种功能的关键字之间的对应关系进行保存。
通常一个SQL语句中包括可以忽略的字符串,例如:空格、回车、换行符等,还包括前面提到的关键字以及以一些注释项等,由上述不同关键字串接起来的SQL语句都有其对应的固定语法结构,即由语法和动作组成的语法逻辑,而不同数据库对于同种功能的SQL语句的语法逻辑可能不同,因此也需要将这些不同数据库中的同种功能的SQL语句的语法逻辑之间的对应关系进行保存。
步骤202:预先设置词法文件和语法文件。
词法文件中包括不同SQL数据库的关键字,语法文件中包括不同关键字的读取规则及对应的语法逻辑,异构数据库的所有语法文件和词法文件可以设置在一个文件中保存。
步骤203:接收通过应用界面输入的源SQL代码。
步骤204:根据源SQL代码的内容判断源SQL代码所属的SQL数据库类型,作为源SQL数据库类型。
步骤205:接收通过应用界面选择的目的SQL数据库类型。
步骤206:读取词法文件和语法文件中与所述源SQL数据库类型对应的内容。
步骤207:根据读取的内容中包含的读取规则分析源SQL代码,提取源SQL代码的关键字及对应的语法逻辑。
步骤208:根据源SQL数据库类型和目的SQL数据库类型查找转译逻辑,获取与编译得到的关键字和语法逻辑对应的目的SQL数据库中对应的关键字和语法逻辑。
根据提取出来的源SQL代码的关键字和语法逻辑,查找预先保存的转译逻辑中的对应关系,得到与源SQL代码中的关键字对应的目的SQL代码的关键字,以及与源SQL代码的语法逻辑对应的目的SQL代码的语法逻辑。
步骤209:按照目的SQL数据库中的语法逻辑组合获取的关键字及源SQL代码中除关键字外的其它代码,生成目的SQL代码,结束当前流程。
另外,当加入新的数据库SQL类型时,可以更新预先保存的转译逻辑,增加新的数据库SQL的关键字和语法逻辑与已存在的每一种数据库SQL的关键字和语法逻辑的对应关系即可。
上述本申请实施例在实现异构数据库之间SQL代码的转译开发时,可以使用SQL开发工具平台(SQL Developer),采用JAVA编写实现异构数据库SQL代码转换的编译转译器,在应用时调用该编译转译器即可。上述开发编译转译器及其应用的过程如图3所示:
步骤301:编写符合javacc语法的针对所有数据库SQL的语法文件和词法文件(ALLSQL.jj)。
词法文件和语法文件可以编写在一个Javacc文件内,该文件由以下几部分组成:
Option选项:在编写ALLSQL.jj文件时这部分不用特别说明,可以用默认的option选项。
分析器类的声明:类名称为ALLSQL。
词法部分声明:包括SKIP、TOKEN、SPECIAL_TOKEN、MORE。
其中,SKIP用于说明可以忽略的字符串,对于SQL来说,其可以忽略的字符串与其它语言可以忽略的字符串基本一致,例如空格、TAB键、回车、换行符等;
TOKEN用来说明SQL包括的所有数据库的关键字,例如alter、commit、roback、for、while等;
SPECIAL_TOKEN主要是注释项的字符串的TOKEN描述。
语法声明:通常语法中的每一个非终结符(不可再推导的为终结符,可推导的为非终结符)都对应一个函数,对于SQL来说,非终结符很多,比如ProcedureDeclaration、procedurebody、for、while、if、cursor等都是非终结符。
步骤302:通过javacc将词法文件和语法文件生成相应的java代码。
通过javacc来解析ALLSQL.jj文件便可以生成词法文件和语法文件的java源代码文件,java源代码文件包括:
ALLSQL.java
ALLSQLConstants.java
ALLSQLTokenManager.java
JavaCharStream.java
ParseException.java
Token.java
TokenMgrError.java
步骤303:编写将一种数据库SQL转译成其它数据库SQL的转译逻辑的java代码。
需要说明的是,本步骤303可以与前述步骤301和步骤302同步执行,其执行结果同时输入到步骤304。
转译代码主要是针对将每种数据库SQL转译成其它数据库SQL的能力,比如:将Oracle数据库中的decode转译成postgres数据库中的case、when语句等,在此不再一一举例。
在设计时针对每一个SQL语句的非终结符都会有对应的不同数据库的接口函数,也就是将SQL语句非终结符之前的字符转译成何种数据库的SQL字符,例如:
toOracle()
toPostgres()
toDb2()
toSqlServer()
toSybase()
toInformax()
当然,也可以根据要转译的数据库类型扩展出除上述数据库之外的其它数据库的接口函数。
步骤304:通过java编译上述所有java代码生成一个类文件。
上述步骤302和步骤303中生成的java源代码,通过javacc编译为二进制的class(类)文件;也可以通过java-jar来打包所有的class文件为一个jar包,在应用界面的目录中加入这个jar包便可以使用。
步骤305:在应用界面中实现转译时调用该类文件,结束当前流程。
转译时,在应用界面中调用上述生成的编译与转译类文件,对源SQL字符串或文件进行转译操作,其中界面应用程序可以是基于web的程序,基于客户端的程序,或者是基于后台的程序。
与本申请转译数据库语言的方法的实施例相对应,本申请还提供了转译数据库语言的装置的实施例。
参见图4,为本申请转译数据库语言的装置的第一实施例框图:
该装置包括:保存单元410、获取单元420、编译单元430、查找单元440和转译单元450。
其中,保存单元410,用于预先设置并保存转译逻辑,所述转译逻辑中包括不同SQL数据库的同种关键字之间的对应关系,以及不同SQL数据库的同种语法逻辑之间的对应关系;
获取单元420,用于获取源SQL代码、源SQL数据库类型及目的SQL数据库类型;
编译单元430,用于编译所述源SQL代码,得到所述源SQL代码中的关键字和语法逻辑;
查找单元440,用于根据所述源SQL数据库类型和目的SQL数据库类型查找所述转译逻辑,获取与所述编译得到的关键字和语法逻辑对应的目的SQL数据库中对应的关键字和语法逻辑;
转译单元450,用于按照所述目的SQL数据库中的语法逻辑组合所述获取的关键字及所述源SQL代码中除关键字外的其它代码,生成目的SQL代码。
参见图5,为本申请转译数据库语言的装置的第二实施例框图:
该装置包括:保存单元510、预设单元520、获取单元530、编译单元540、查找单元550、转译单元560和更新单元570。
其中,保存单元510,用于预先设置并保存转译逻辑,所述转译逻辑中包括不同SQL数据库的同种关键字之间的对应关系,以及不同SQL数据库的同种语法逻辑之间的对应关系;
预设单元520,用于预先设置词法文件和语法文件,所述词法文件中包括不同SQL数据库的关键字;所述语法文件中包括不同关键字的读取规则及对应的语法逻辑;
获取单元530,用于获取源SQL代码、源SQL数据库类型及目的SQL数据库类型;
编译单元540,用于编译所述源SQL代码,得到所述源SQL代码中的关键字和语法逻辑;
查找单元550,用于根据所述源SQL数据库类型和目的SQL数据库类型查找所述转译逻辑,获取与所述编译得到的关键字和语法逻辑对应的目的SQL数据库中对应的关键字和语法逻辑;
转译单元560,用于按照所述目的SQL数据库中的语法逻辑组合所述获取的关键字及所述源SQL代码中除关键字外的其它代码,生成目的SQL代码;
更新单元570,用于当加入新的数据库SQL类型时,更新所述转译逻辑,增加所述新的数据库SQL的关键字和语法逻辑与已存在的每一种数据库SQL的关键字和语法逻辑的对应关系。
具体的,获取单元530可以包括(图5中未示出):
源代码接收单元,用于接收通过应用界面输入的源SQL代码;
源类型判断单元,用于根据所述源SQL代码的内容判断所述源SQL代码所属的SQL数据库类型,作为源SQL数据库类型;
目的类型接收单元,用于接收通过应用界面选择的目的SQL数据库类型。
具体的,编译单元540可以包括(图5中未示出):
文件读取单元,用于读取所述词法文件和语法文件中与所述源SQL数据库类型对应的内容;
信息提取单元,用于根据所述读取的内容中包含的读取规则分析所述源SQL代码,提取所述源SQL代码的关键字及对应的语法逻辑。
通过以上的实施方式的描述可知,本申请实施例中预先设置并保存了转译逻辑,当获取源SQL代码、源SQL数据库类型及目的SQL数据库类型后,编译源SQL代码得到源SQL代码中的关键字和语法逻辑,根据源SQL数据库类型和目的SQL数据库类型查找转译逻辑,获取与编译得到的关键字和语法逻辑对应的目的SQL数据库中对应的关键字和语法逻辑,按照目的SQL数据库中的语法逻辑组合获取的关键字及源SQL代码中除关键字外的其它代码,生成目的SQL代码。本申请实施例中由于预先设置了关键字和语法逻辑的转译逻辑,因此对于不同数据库之间的SQL代码,可以根据这些转译逻辑将源SQL代码自动转译成目的SQL代码,而且,由于本申请可以批量读取源SQL代码并批量进行自动转译,因此,转译速度快捷,效率高。另外,本申请无需开发人员重新编写目的SQL代码,由此提高了数据库的开发效率,减轻了开发人员的负担。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。
Claims (8)
1.一种转译数据库语言的方法,其特征在于,预先设置并保存转译逻辑,所述转译逻辑中包括不同SQL数据库的同种关键字之间的对应关系,以及不同SQL数据库的同种语法逻辑之间的对应关系;预先设置词法文件和语法文件,所述词法文件中包括不同SQL数据库的关键字,所述语法文件中包括不同关键字的读取规则及对应的语法逻辑,所述方法包括:
获取源SQL代码、源SQL数据库类型及目的SQL数据库类型;
读取所述词法文件和语法文件中与所述源SQL数据库类型对应的内容;
根据所述读取的内容中包含的读取规则分析所述源SQL代码,提取所述源SQL代码的关键字及对应的语法逻辑;
根据所述源SQL数据库类型和目的SQL数据库类型查找所述转译逻辑,获取与所述编译得到的关键字和语法逻辑对应的目的SQL数据库中对应的关键字和语法逻辑;
按照所述目的SQL数据库中的语法逻辑组合所述获取的关键字及所述源SQL代码中除关键字外的其它代码,生成目的SQL代码。
2.根据权利要求1所述的方法,其特征在于,所述获取源SQL数据库类型、目的SQL数据库类型及源SQL代码包括:
接收通过应用界面输入的源SQL代码;
根据所述源SQL代码的内容判断所述源SQL代码所属的SQL数据库类型,作为源SQL数据库类型;
接收通过应用界面选择的目的SQL数据库类型。
3.根据权利要求1或2所述的方法,其特征在于,所述SQL数据库类型包括:Postgress数据库、Mysql数据库、Sqlserver数据库、Oracle数据库、Informix数据库、Sybase数据库、Db2数据库。
4.根据权利要求1所述的方法,其特征在于,所述词法文件和语法文件具体为基于JAVACC的语法文件和词法文件;
所述转译逻辑为基于JAVA编写的转译逻辑。
5.根据权利要求1所述的方法,其特征在于,还包括:当加入新的数据库SQL类型时,更新所述转译逻辑,增加所述新的数据库SQL的关键字和语法逻辑与已存在的每一种数据库SQL的关键字和语法逻辑的对应关系。
6.一种转译数据库语言的装置,其特征在于,包括:
保存单元,用于预先设置并保存转译逻辑,所述转译逻辑中包括不同SQL数据库的同种关键字之间的对应关系,以及不同SQL数据库的同种语法逻辑之间的对应关系;预先设置词法文件和语法文件,所述词法文件中包括不同SQL数据库的关键字,所述语法文件中包括不同关键字的读取规则及对应的语法逻辑;
获取单元,用于获取源SQL代码、源SQL数据库类型及目的SQL数据库类型;
编译单元,用于读取所述词法文件和语法文件中与所述源SQL数据库类型对应的内容;根据所述读取的内容中包含的读取规则分析所述源SQL代码,提取所述源SQL代码的关键字及对应的语法逻辑;
查找单元,用于根据所述源SQL数据库类型和目的SQL数据库类型查找所述转译逻辑,获取与所述编译得到的关键字和语法逻辑对应的目的SQL数据库中对应的关键字和语法逻辑;
转译单元,用于按照所述目的SQL数据库中的语法逻辑组合所述获取的关键字及所述源SQL代码中除关键字外的其它代码,生成目的SQL代码。
7.根据权利要求6所述的装置,其特征在于,所述获取单元包括:
源代码接收单元,用于接收通过应用界面输入的源SQL代码;
源类型判断单元,用于根据所述源SQL代码的内容判断所述源SQL代码所属的SQL数据库类型,作为源SQL数据库类型;
目的类型接收单元,用于接收通过应用界面选择的目的SQL数据库类型。
8.根据权利要求6所述的装置,其特征在于,还包括:
更新单元,用于当加入新的数据库SQL类型时,更新所述转译逻辑,增加所述新的数据库SQL的关键字和语法逻辑与已存在的每一种数据库SQL的关键字和语法逻辑的对应关系。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910246314 CN102073490B (zh) | 2009-11-25 | 2009-11-25 | 转译数据库语言的方法及装置 |
HK11107091.0A HK1153017A1 (en) | 2009-11-25 | 2011-07-08 | A method and device for translating database language |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910246314 CN102073490B (zh) | 2009-11-25 | 2009-11-25 | 转译数据库语言的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102073490A CN102073490A (zh) | 2011-05-25 |
CN102073490B true CN102073490B (zh) | 2013-09-11 |
Family
ID=44032039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910246314 Active CN102073490B (zh) | 2009-11-25 | 2009-11-25 | 转译数据库语言的方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102073490B (zh) |
HK (1) | HK1153017A1 (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102339317A (zh) * | 2011-10-20 | 2012-02-01 | 北京握奇数据系统有限公司 | 大容量数据库卡及其数据通信方法 |
CN102750374A (zh) * | 2012-06-20 | 2012-10-24 | 深圳市远行科技有限公司 | 一种基于数据库脚本的数据追溯和影响关系的分析方法 |
CN102902820B (zh) * | 2012-10-31 | 2015-09-09 | 华为技术有限公司 | 数据库类型的识别方法和装置 |
CN104252511A (zh) * | 2013-11-05 | 2014-12-31 | 深圳市华傲数据技术有限公司 | 一种sql命令编译方法和装置 |
CN104252510A (zh) * | 2013-11-05 | 2014-12-31 | 深圳市华傲数据技术有限公司 | 一种sql语言翻译方法和装置 |
CN103914572A (zh) * | 2014-04-29 | 2014-07-09 | 福建星网视易信息系统有限公司 | 数据库建立系统、装置和方法 |
CN104731597A (zh) * | 2015-03-30 | 2015-06-24 | 上海华力微电子有限公司 | 将sql语句应用于工程软件编辑平台的方法 |
CN106126540B (zh) * | 2016-06-15 | 2019-07-09 | 中国传媒大学 | 数据库访问系统及其访问方法 |
CN107391368B (zh) * | 2017-07-13 | 2021-02-09 | 中国航发控制系统研究所 | 一种航空机载软件中源代码与目标代码一致性的分析方法 |
CN110309171B (zh) * | 2018-02-26 | 2021-08-20 | 华为技术有限公司 | 数据库查询方法、服务器和系统 |
CN110399384B (zh) * | 2018-04-23 | 2023-12-15 | 阿里巴巴集团控股有限公司 | Udf适配方法、数据处理方法、设备及存储介质 |
CN109062918A (zh) * | 2018-05-31 | 2018-12-21 | 阿里巴巴集团控股有限公司 | 一种sql语句转换的方法及装置 |
CN109408528B (zh) * | 2018-10-25 | 2022-07-15 | 北京信安世纪科技股份有限公司 | 一种数据库脚本生成方法、装置、计算装置和存储介质 |
CN110008448B (zh) * | 2019-04-02 | 2023-10-17 | 中国工商银行股份有限公司 | 将SQL代码自动转换为Java代码的方法和装置 |
CN110134404A (zh) * | 2019-04-12 | 2019-08-16 | 深圳壹账通智能科技有限公司 | 代码翻译方法、装置、计算机设备和存储介质 |
CN110990016B (zh) * | 2019-11-29 | 2023-08-29 | 浪潮商用机器有限公司 | Linux操作系统的命令获取方法、装置、设备及页面 |
CN111125218A (zh) * | 2019-12-13 | 2020-05-08 | 成都安恒信息技术有限公司 | 一种基于协议解析的数据库兼容方法及其兼容性代理装置 |
CN111061757B (zh) * | 2019-12-19 | 2023-03-31 | 用友网络科技股份有限公司 | 数据库的语言转换方法、装置、电子设备及存储介质 |
CN112000690B (zh) * | 2020-08-19 | 2024-03-19 | 北京人大金仓信息技术股份有限公司 | 解析结构化操作语句的方法和装置 |
CN113391818A (zh) * | 2021-03-26 | 2021-09-14 | 广州海量数据库技术有限公司 | 一种编译文件的生成方法以及装置 |
CN113127124A (zh) * | 2021-04-21 | 2021-07-16 | 平安付科技服务有限公司 | 数据库语言类型切换方法、装置、计算机设备及存储介质 |
CN114047927B (zh) * | 2022-01-11 | 2022-04-29 | 山东捷瑞数字科技股份有限公司 | 一种数据库代码转换方法及系统 |
CN114546402A (zh) * | 2022-02-21 | 2022-05-27 | 未鲲(上海)科技服务有限公司 | 基于java的结构化数据重构方法、装置、设备及存储介质 |
CN115033592A (zh) * | 2022-06-17 | 2022-09-09 | 中国平安人寿保险股份有限公司 | 基于数据库的sql语句处理方法、装置、设备及存储介质 |
CN115757339A (zh) * | 2022-11-16 | 2023-03-07 | 恒辉信达技术有限公司 | Oracle脚本自动转Postgresql脚本方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5809505A (en) * | 1996-06-14 | 1998-09-15 | Lo; Thomas | System and method for relational to object mapping |
EP1388793A2 (en) * | 2002-08-09 | 2004-02-11 | Joint Technology Corporation | Method for transforming SQL queries |
CN101105814A (zh) * | 2007-09-11 | 2008-01-16 | 金蝶软件(中国)有限公司 | 一种将Script语言转换成SQL语言的方法及装置 |
CN101561817A (zh) * | 2009-06-02 | 2009-10-21 | 天津大学 | 一种XQuery到SQL查询语言的转换算法及关系数据的查询方法 |
-
2009
- 2009-11-25 CN CN 200910246314 patent/CN102073490B/zh active Active
-
2011
- 2011-07-08 HK HK11107091.0A patent/HK1153017A1/xx unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5809505A (en) * | 1996-06-14 | 1998-09-15 | Lo; Thomas | System and method for relational to object mapping |
EP1388793A2 (en) * | 2002-08-09 | 2004-02-11 | Joint Technology Corporation | Method for transforming SQL queries |
CN101105814A (zh) * | 2007-09-11 | 2008-01-16 | 金蝶软件(中国)有限公司 | 一种将Script语言转换成SQL语言的方法及装置 |
CN101561817A (zh) * | 2009-06-02 | 2009-10-21 | 天津大学 | 一种XQuery到SQL查询语言的转换算法及关系数据的查询方法 |
Also Published As
Publication number | Publication date |
---|---|
HK1153017A1 (en) | 2012-03-16 |
CN102073490A (zh) | 2011-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102073490B (zh) | 转译数据库语言的方法及装置 | |
US8126901B2 (en) | Method and apparatus for generating a dynamic web page | |
CN101233487B (zh) | 拉姆达表达式 | |
US8244780B1 (en) | Parameter oriented automated database command | |
US8108360B2 (en) | Database object update order determination | |
US20090030902A1 (en) | Schematized data intelligent assistance for development environments | |
CN104133772A (zh) | 一种自动生成测试数据的方法 | |
CN103092970A (zh) | 一种数据库操作方法及设备 | |
CN102750152A (zh) | 一种基于描述语言生成多种编程语言的应用的方法及装置 | |
CN109710220B (zh) | 关系型数据库查询方法、装置、设备及存储介质 | |
CN112764743B (zh) | 一种基于数据模型驱动自动生成软件的方法 | |
US8135716B2 (en) | Systems and method for mapping large object data content in a database table to a work area | |
US20040019589A1 (en) | Driver for mapping standard database queries and commands to markup language documents | |
CN115269629A (zh) | 一种支持多种数据源的数据查询方法及系统 | |
CN113687827B (zh) | 基于微件的数据列表生成方法、装置、设备及存储介质 | |
KR101769848B1 (ko) | 상용 인터프리터를 이용한 스크립트 기반 데이터 처리 시스템 | |
US6592628B1 (en) | Modular storage method and apparatus for use with software applications | |
CN103809915A (zh) | 一种磁盘文件的读写方法和装置 | |
CN115794858A (zh) | 查询语句处理方法、装置、设备及存储介质 | |
US20150324333A1 (en) | Systems and methods for automatically generating hyperlinks | |
CN116756184B (zh) | 数据库实例处理方法、装置、设备、存储介质及程序产品 | |
CN114003317B (zh) | 内联实现方法及装置、电子设备、存储介质及程序产品 | |
CN112394936B (zh) | 数据库操作指令转换方法、装置、设备及存储介质 | |
CN118377558A (zh) | 接口调用方法、装置、设备、介质和程序产品 | |
CN115951888A (zh) | 一种定位程序源码位置的方法及计算设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1153017 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1153017 Country of ref document: HK |