数据库间的语句转换方法和装置与流程

文档序号:11707581阅读:183来源:国知局
数据库间的语句转换方法和装置与流程

本申请涉及文档分析技术领域,尤其涉及一种数据库间的语句转换方法和装置。



背景技术:

目前,大部分数据库之间(oracle、db2、sqlserver、sybase、informix、mysql、vf、access等)切换的开发,只有提供数据库之间的数据同步系统与方法,还未有将数据转换时存储过程与视图一起转换的相关系统或方法,一般都是开发人员通过逐一比对每个存储过程与视图后进行改写,增加了改造开发的工作量,需要投入的人力成本较大。

由于一般编写的存储过程与视图都利用数据库本身内置的函数进行语句编写,来满足各种功能需求,但各个数据库内置的函数功能与方法都不太一样,方法名称与使用方法都不一样,故对于涉及大量的存储过程与视图的复杂数据库在数据库间进行同步转换时,开发人员必须花费大量的工作量在每条语句的比对、编写改造上,这样的工作量是极大的,导致出错率较高,开发效率也较低。



技术实现要素:

为解决现有技术中的上述问题,本申请的一个目的在于提出一种数据库间的语句转换方法及装置,可以有效减少开发人员的工作量,提高工作效率,降低出错率。

为达到上述目的,本申请实施例提出的数据库间的语句转换方法,包括:获取源数据库中的源语句,并进行识别分析;在目标数据库语言中查找与所述源语句对应的映射语句;根据所述源语句中的参数确定所述映射语句的参数,得到目标数据库语句。

为达到上述目的,本申请实施例提出的数据库间的语句转换装置,包括:获取单元,用于获取源数据库中的源语句,并进行识别分析;查找单元,用于在目标数据库语言中查找与所述源语句对应的映射语句;确定单元,用于根据所述源语句中的参数确定所述映射语句的参数,得到目标数据库语句。

由以上本申请实施例提供的技术方案可见,通过获取源数据库的源语句并进行分 析识别,在目标数据库语言中查找与源语句功能相同的目标语句,并使用映射函数替换源语句中的函数,将源语句中的参数转换类型并带入到转换后的目标语句和/或映射函数中,总而实现了数据库间语句的转换,进而能够实现任意数据库间存储过程与视图的转换,能够有效减少开发人员的工作量,降低人力成本,提高开发效率,降低出错率。

本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请一实施例提出的数据库间的语句转换方法的流程示意图;

图2是本申请一实施例提出的数据库间的语句转换装置的结构示意图;

图3是本申请另一实施例的数据库间的语句转换装置的结构示意图;

图4是本申请一实施例的在数据库间进行语句转换的流程示意图。

具体实施方式

本申请实施例提供一种数据库间的语句转换方法和装置。

为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

图1是本申请一实施例提出的数据库间的语句转换方法的流程示意图,在该图所示的实施例中,通过查找源语句在目标数据库语言中对应功能的映射语句,并将源语句中的参数带入映射语句中,来实现数据库间的语句转换,从而降低人力成本。本申请所述的数据库间包括不同类型的数据库之间及同类型数据库不同版本之间。如图1 所示,该方法包括:

步骤101,获取源数据库中的源语句,并进行识别分析。其中,源语句中可以包括函数和参数等。可以根据源数据库语言的功能描述对源语句进行识别。

步骤102,在目标数据库语言中查找与所述源语句对应的映射语句。所述映射语句是能够与源语句实现相同功能的语句。

步骤103,根据所述源语句中的参数确定所述映射语句的参数,得到目标数据库语句。

根据本申请的一个实施例,所述获取源数据库中的源语句包括:获取源数据库的连接信息,其中,连接信息包括源数据库地址,源数据库名,以及源数据库的账号名和密码;根据所述连接信息获取所述源数据库中的源语句。通过输入源数据库的连接信息获取源数据库的访问权限,与源数据库建立连接,从而对源数据库中的语句进行分析、转换等交互操作。

根据本申请的一个实施例,所述获取源数据库中的源语句,并进行识别分析包括:识别所述源语句中的函数信息和参数信息,其中,函数信息包括函数的名称和功能,参数信息包括参数的类型、内容和功能。通过识别源语句中的函数和参数,从而根据函数和参数确定源语句所实现的功能。

根据本申请的一个实施例,所述在目标数据库语言中查找与所述源语句对应的映射语句包括:根据所述函数的功能,在所述目标数据库语言中查找与所述函数对应的映射函数。其中,映射函数是目标数据库语言中能够实现源语句中函数功能的函数。通过分析源语句中的函数所实现的功能,在目标数据库语言中查找能够实现相同功能的函数。

根据本申请的一个实施例,所述根据所述函数的功能,在所述目标数据库语言中查找与所述函数对应的映射函数进一步包括:对所述函数的功能进行语义分析;获取所述目标数据库语言中函数的功能描述;根据所述功能描述查找与所述函数的功能相同的映射函数。通过对功能进行语义分析,从而在目标数据库语言中查找与之匹配的能够实现相同功能的映射函数。

根据本申请的一个实施例,所述根据所述源语句中的参数确定所述映射语句的参数包括:将所述源语句中的参数代入所述映射语句中的参数;根据所述映射语句对所述源语句进行编译,得到目标语句;将所述目标语句存储到目标数据库的预设位置。 具体的,源语句中包括函数,参数可以被包含在函数中也可以直接被包含在源语句中。这里所说的函数可以是编程意义上的函数,也可以是编程意义上的指令等。

根据本申请的一个实施例,在所述根据所述功能描述查找与所述函数的功能相同的映射函数之后,还包括:当所述函数具有多个功能相同的映射函数时,选取其中一个映射函数用于编译;若编译不通过,则重新选取其他的所述映射函数。当目标数据库语言中有多个可以实现与源语句中函数相同功能的映射函数时,可以按照预设的规则(如随机选取或按顺序选第一个等)选取其中一个用于编译,当结果显示该函数编译不通过时,选取其他的映射函数重新编译,直到编译成功为止。

根据本申请的一个实施例,所述根据所述源语句中的参数确定所述映射语句的参数包括:对所述源语句中的参数进行分析,确定所述源语句中的参数的类型和内容;当所述源语句中的参数与所述映射语句中对应的参数的类型不同时,将所述源语句中的参数调整为所述映射语句中对应参数的类型。具体地,源语句中的参数可能与映射函数或映射语句中对应的参数的类型存在差异,例如源语句中的参数为浮点型,而映射语句中的参数为整型,此时则需要在保持该参数内容含义不变的情况下改变参数的类型,从而将源语句中的参数对应的应用到映射语句中,进而通过将源语句中的函数转换为目标数据库语言的映射函数,将源语句中的参数类型转换为适用于映射语句中对应参数的类型,从而实现源语句到目标数据库语句的转换。

根据本申请的实施例,可以通过获取源数据库的源语句并进行分析识别,在目标数据库语言中查找与源语句功能相同的目标语句,并使用映射函数替换源语句中的函数,将源语句中的参数转换类型并带入到转换后的目标语句和/或映射函数中,总而实现了数据库间语句的转换,进而能够实现任意数据库间存储过程与视图的转换,能够有效减少开发人员的工作量,降低人力成本,提高开发效率,降低出错率。

基于同一发明构思,本申请实施例还提供了一种数据库间的语句转换装置,可以用于实现上述实施例所描述的方法,如下面的实施例所述。由于数据库间的语句转换装置解决问题的原理与数据库间的语句转换方法相似,因此数据库间的语句转换装置的实施可以参见数据库间的语句转换装置的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图2是本申请一实施例的数据库间的语句转换装置的结构示意图。本实施例的装置可以为实现相应功能的逻辑部件构成,也可以为运行有相应功能软件的电子设备。

如图2所示,该数据库间的语句转换装置包括:获取单元100、查找单元200和确定单元300。

具体地,获取单元100用于获取源数据库中的源语句,并进行识别分析。

查找单元200用于在目标数据库语言中查找与所述源语句对应的映射语句。

确定单元300用于根据所述源语句中的参数确定所述映射语句的参数,得到目标数据库语句。

图3所示是本申请另一实施例的数据库间的语句转换装置的结构示意图。

根据本申请的一个实施例,如图3所示,获取单元100包括:第一获取模块110、第二获取模块120和识别模块130,所述查找单元200包括:分析模块210、第三获取模块220和查找模块230,所述确定单元300包括:代入模块310、编译模块320、存储模块330、确定模块340和调整模块350,所述装置在图2的基础上还包括选取单元400。

第一获取模块110用于获取源数据库的连接信息,其中,连接信息包括源数据库地址,源数据库名,以及源数据库的账号名和密码。

第二获取模块120用于根据所述连接信息获取所述源数据库中的源语句。

识别模块130用于识别所述源语句中的函数信息和参数信息,其中,函数信息包括函数的名称和功能,参数信息包括参数的类型、内容和功能。

根据本申请的一个实施例,所述查找单元200具体用于根据所述函数的功能,在所述目标数据库语言中查找与所述函数对应的映射函数。

分析模块210用于对所述函数的功能进行语义分析。

第三获取模块220用于获取所述目标数据库语言中函数的功能描述。

查找模块230用于根据所述功能描述查找与所述函数的功能相同的映射函数。

代入模块310用于将所述源语句中的参数代入所述映射语句中的参数。

编译模块320用于根据所述映射语句对所述源语句进行编译,得到目标语句。

存储模块330用于将所述目标语句存储到目标数据库的预设位置。

选取单元400用于在所述函数具有多个功能相同的映射函数时,选取其中一个映射函数用于编译,以及在编译不通过时,重新选取其他的所述映射函数。

确定模块340用于对所述源语句中的参数进行分析,确定所述源语句中的参数的类型和内容。

调整模块350用于在所述源语句中的参数与所述映射语句中对应的参数的类型不同时,将所述源语句中的参数调整为所述映射语句中对应参数的类型。

根据本申请的实施例,可以通过获取源数据库的源语句并进行分析识别,在目标数据库语言中查找与源语句功能相同的目标语句,并使用映射函数替换源语句中的函数,将源语句中的参数转换类型并带入到转换后的目标语句和/或映射函数中,总而实现了数据库间语句的转换,进而能够实现任意数据库间存储过程与视图的转换,能够有效减少开发人员的工作量,降低人力成本,提高开发效率,降低出错率。

图4本申请一实施例的在数据库间进行语句转换的流程示意图:

步骤401,获取源数据库的连接信息。

其中,连接信息包括源数据库地址,源数据库名,以及源数据库的账号名和密码等。

步骤402,根据所述连接信息获取所述源数据库中的源语句。

具体地,通过输入源数据库的连接信息获取源数据库的访问权限,与源数据库建立连接,从而对源数据库中的语句进行分析、转换等交互操作。

步骤403,识别所述源语句中的函数信息和参数信息。

其中,函数信息包括函数的名称和功能,参数信息包括参数的类型、内容和功能。源语句中包括函数,参数可以被包含在函数中也可以直接被包含在源语句中。这里所说的函数可以是编程意义上的函数,也可以是编程意义上的指令等。通过识别源语句中的函数信息和参数信息,可以确定源语句所实现的功能。

步骤404,根据所述函数的功能,在所述目标数据库语言中查找与所述函数对应的映射函数。

其中,映射函数是目标数据库语言中能够实现源语句中函数功能的函数。可通过分析源语句中的函数所实现的功能,在目标数据库语言中查找能够实现相同功能的函数。例如可以根据源语句中函数的名称到源数据库语言中查找该函数的功能描述,对该功能描述进行语义分析,根据语义分析的关键词结果到目标数据库语言中查找功能描述与该功能相匹配的映射函数。

在本申请的一个实施例中,当所述函数具有多个功能相同的映射函数时,可以按 照预设的规则(如随机选取或按顺序选第一个等)选取其中一个映射函数用于编译;若编译结果显示不通过,则重新选取其他的所述映射函数重新编译,直到编译成功为止。

以sqlserver数据库语言转换为mysql数据库语言为例,如:sqlserver语言中的isnull函数功能为判断数据是否为空,在mysql语言中对应的实现该功能的是ifnull函数,sqlserver语言中获取当前时间的函数是getdate,在mysql语言中对应的是now函数,根据这些功能的对应关系,可以通过分析替换把源数据库中的各条语句转换成符合目标数据库语法的语句并编译。

步骤405,对所述源语句中的参数进行分析,确定所述源语句中的参数的类型和内容。

其中,参数的类型是按照数据库语言中的预设规则设定的,参数的内容例如是数值或者具体的变量参数等。

步骤406,当所述源语句中的参数与所述映射语句中对应的参数的类型不同时,将所述源语句中的参数调整为所述映射语句中对应参数的类型。

具体地,源语句中的参数可能与映射函数或映射语句中对应的参数的类型存在差异,例如源语句中的参数为浮点型,而映射语句中的参数为整型,此时则需要在保持该参数内容含义不变的情况下改变参数的类型。

步骤407,将调整后的参数代入所述映射语句中相应的参数。

将源语句中的参数调整类型后对应的应用到映射语句中,进而通过将源语句中的函数转换为目标数据库语言的映射函数,将源语句中的参数转换为适用于映射语句的参数,从而实现源语句到目标数据库语句的转换。

步骤408,对所述映射语句进行编译,得到目标语句。

在编译不成功时,可以重新执行步骤404,重新选择适用的映射函数进行编译。在多次编译不通过的情况下,还可以进行人工筛查。

步骤409,将所述目标语句存储到目标数据库的预设位置。

在本申请的一个实施例中,还可以根据各个数据库语言的功能描述,根据各数据库的语法语义规则、函数的功能、数据类型定义等,对每条语句进行分析,预先建立数据库之间的语句和\或函数映射表格,在需要进行数据库间的语句转换时,通过分析语句中的函数的名称,在映射表格中查找到与该函数对应的目标数据库的映射函 数,将转换后的参数应用到映射函数中进行编译,从而把各条语句转换成符合目标数据库语法的语句并编译,进而把原存储过程与视图转换成符合目标数据库的语法、能够实现同等功能并能成功运行的存储过程与视图。

本实施例可以通过获取源数据库的源语句并进行分析识别,在目标数据库语言中查找与源语句功能相同的目标语句,并使用映射函数替换源语句中的函数,将源语句中的参数转换类型并带入到转换后的目标语句和/或映射函数中,总而实现了数据库间语句的转换,进而能够实现任意数据库间存储过程与视图的转换,能够有效减少开发人员的工作量,降低人力成本,提高开发效率,降低出错率。

需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。

应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1