转译数据库语言的方法及装置的制作方法

文档序号:6585591阅读:122来源:国知局
专利名称:转译数据库语言的方法及装置的制作方法
技术领域
本申请涉及计算机技术领域,尤其涉及一种转译数据库语言的方法及装置。
背景技术
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数据库、DM 数据库。当然,本申请实施例也可以不局限于上述数据库,当有新的数据库类型时,可以通 过更新转译逻辑的内容,加入该新的数据库类型的关键字和语法逻辑,将该新的数据库类 型纳入本申请转译的范围。步骤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. j j)。词法文件和语法文件可以编写在一个Javacc文件内,该文件由以下几部分组成Option选项在编写ALLSQL. jj文件时这部分不用特别说明,可以用默认的 option 选项。分析器类的声明类名称为ALLSQL。词法部分声明包括SKIP、TOKEN、SPECIAL TOKEN、MORE。其中,SKIP用于说明可以忽略的字符串,对于SQL来说,其可以忽略的字符串与其 它语言可以忽略的字符串基本一致,例如空格、TAB键、回车、换行符等;TOKEN用来说明SQL包括的所有数据库的关键字,例如alter、commit、roback、 for、while 等;SPECIAL_T0KEN主要是注释项的字符串的TOKEN描述。语法声明通常语法中的每一个非终结符(不可再推导的为终结符,可推导的为 非终结符)都对应一个函数,对于SQL来说,非终结符很多,比如ProcedureDeclaration、 procedurebody、for、while、if、cursor 等都是非终结符。步骤302 通过javacc将词法文件和语法文件生成相应的java代码。通过javacc来解析ALLSQL. jj文件便可以生成词法文件和语法文件的java源代 码文件,java源代码文件包括ALLSQL. javaALLSQLConstants. javaALLSQLTokenManager. javaJavaCharStream. javaParseException. javaToken, javaTokenMgrError. java步骤303 编写将一种数据库SQL转译成其它数据库SQL的转译逻辑的java代码。需要说明的是,本步骤303可以与前述步骤301和步骤302同步执行,其执行结果同时输入到步骤304。转译代码主要是针对将每种数据库SQL转译成其它数据库SQL的能力,比如将 Oracle数据库中的decode转译成postgres数据库中的case、when语句等,在此不再—— 举例。在设计时针对每一个SQL语句的非终结符都会有对应的不同数据库的接口函数, 也就是将SQL语句非终结符之前的字符转译成何种数据库的SQL字符,例如toOracleOtoPostgres ()toDb2 ()toSqlServer ()toSybase ()to Informax ()当然,也可以根据要转译的数据库类型扩展出除上述数据库之外的其它数据库的 接口函数。步骤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、编译单元M0、查找单元 550、转译单元560和更新单元570。其中,保存单元510,用于预先设置并保存转译逻辑,所述转译逻辑中包括不同 SQL数据库的同种关键字之间的对应关系,以及不同SQL数据库的同种语法逻辑之间的对 应关系;预设单元520,用于预先设置词法文件和语法文件,所述词法文件中包括不同SQL 数据库的关键字;所述语法文件中包括不同关键字的读取规则及对应的语法逻辑;获取单元530,用于获取源SQL代码、源SQL数据库类型及目的SQL数据库类型;编译单元M0,用于编译所述源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、小型计算机、大型计算机、包括以上任何系统或设备的 分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序 模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组 件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由 通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以 位于包括存储设备在内的本地和远程计算机存储介质中。虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和 变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的 精神。
权利要求
1.一种转译数据库语言的方法,其特征在于,预先设置并保存转译逻辑,所述转译逻辑 中包括不同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数据 库、DM数据库。
4.根据权利要求1所述的方法,其特征在于,还包括预先设置词法文件和语法文件; 所述词法文件中包括不同SQL数据库的关键字;所述语法文件中包括不同关键字的读取规则及对应的语法逻辑。
5.根据权利要求4所述的方法,其特征在于,所述编译所述源SQL代码包括 读取所述词法文件和语法文件中与所述源SQL数据库类型对应的内容;根据所述读取的内容中包含的读取规则分析所述源SQL代码,提取所述源SQL代码的 关键字及对应的语法逻辑。
6.根据权利要求4所述的方法,其特征在于,所述词法文件和语法文件具体为基于 JAVACC的语法文件和词法文件;所述转译逻辑为基于JAVA编写的转译逻辑。
7.根据权利要求1所述的方法,其特征在于,还包括当加入新的数据库SQL类型时, 更新所述转译逻辑,增加所述新的数据库SQL的关键字和语法逻辑与已存在的每一种数据 库SQL的关键字和语法逻辑的对应关系。
8.一种转译数据库语言的装置,其特征在于,包括保存单元,用于预先设置并保存转译逻辑,所述转译逻辑中包括不同SQL数据库的同 种关键字之间的对应关系,以及不同SQL数据库的同种语法逻辑之间的对应关系; 获取单元,用于获取源SQL代码、源SQL数据库类型及目的SQL数据库类型; 编译单元,用于编译所述源SQL代码,得到所述源SQL代码中的关键字和语法逻辑; 查找单元,用于根据所述源SQL数据库类型和目的SQL数据库类型查找所述转译逻辑, 获取与所述编译得到的关键字和语法逻辑对应的目的SQL数据库中对应的关键字和语法 逻辑;转译单元,用于按照所述目的SQL数据库中的语法逻辑组合所述获取的关键字及所述 源SQL代码中除关键字外的其它代码,生成目的SQL代码。
9.根据权利要求8所述的装置,其特征在于,所述获取单元包括 源代码接收单元,用于接收通过应用界面输入的源SQL代码;源类型判断单元,用于根据所述源SQL代码的内容判断所述源SQL代码所属的SQL数 据库类型,作为源SQL数据库类型;目的类型接收单元,用于接收通过应用界面选择的目的SQL数据库类型。
10.根据权利要求8所述的装置,其特征在于,还包括预设单元,用于预先设置词法文件和语法文件,所述词法文件中包括不同SQL数据库 的关键字;所述语法文件中包括不同关键字的读取规则及对应的语法逻辑。
11.根据权利要求10所述的装置,其特征在于,所述编译单元包括文件读取单元,用于读取所述词法文件和语法文件中与所述源SQL数据库类型对应的 内容;信息提取单元,用于根据所述读取的内容中包含的读取规则分析所述源SQL代码,提 取所述源SQL代码的关键字及对应的语法逻辑。
12.根据权利要求8所述的装置,其特征在于,还包括更新单元,用于当加入新的数据库SQL类型时,更新所述转译逻辑,增加所述新的数据 库SQL的关键字和语法逻辑与已存在的每一种数据库SQL的关键字和语法逻辑的对应关系。
全文摘要
本申请实施例公开了一种转译数据库语言的方法及装置,所述方法预先设置并保存转译逻辑,包括获取源SQL代码、源SQL数据库类型及目的SQL数据库类型;编译源SQL代码,得到源SQL代码中的关键字和语法逻辑;根据源SQL数据库类型和目的SQL数据库类型查找转译逻辑,获取与编译得到的关键字和语法逻辑对应的目的SQL数据库中对应的关键字和语法逻辑;按照目的SQL数据库中的语法逻辑组合获取的关键字及源SQL代码中除关键字外的其它代码,生成目的SQL代码。本申请可以根据转译逻辑将源SQL代码自动转译成目的SQL代码,而无需开发人员重新编写目的SQL代码,由此提高了数据库的开发效率,减轻了开发人员的负担。
文档编号G06F9/44GK102073490SQ20091024631
公开日2011年5月25日 申请日期2009年11月25日 优先权日2009年11月25日
发明者杨柏刚 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1