CN111382140B - 数据库序列迁移的方法及电子设备 - Google Patents
数据库序列迁移的方法及电子设备 Download PDFInfo
- Publication number
- CN111382140B CN111382140B CN201811654191.8A CN201811654191A CN111382140B CN 111382140 B CN111382140 B CN 111382140B CN 201811654191 A CN201811654191 A CN 201811654191A CN 111382140 B CN111382140 B CN 111382140B
- Authority
- CN
- China
- Prior art keywords
- value
- attribute information
- database
- data type
- sequence
- 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
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据库序列迁移的方法及电子设备,应用于数据库技术领域,其中的方法包括:获取源数据库中待迁移的数据库序列的属性信息,作为第一属性信息;根据所述第一属性信息,确定与目标数据库匹配的第二属性信息;以及根据所述第二属性信息,在所述目标数据库中创建与所述第二属性信息匹配的数据库序列,作为迁移后的数据库序列,从而实现了数据库序列的迁移,如此,通过对属性信息的转换,实现在同构或异构数据库之间的自动迁移,与上述相关技术中手工操作的方式相比,不仅准确而且简单,大幅提升了迁移效率,减少了迁移的时间周期。
Description
技术领域
本申请涉及数据库技术领域,尤其涉及一种数据库序列迁移的方法及电子设备。
背景技术
数据库是将数据按照一定格式存储起来的系统,常见的数据库包括IBM DB2、JavaDB、Oracle、PostgreSQL、Sybase、MySQL、Microsft SOL Server等等。
数据库序列是一种数据库对象,其具有属性信息。
相关技术中,在数据库之间迁移数据库序列时,需要人工进行迁移,由精通源数据库和目标数据库的程序员手工将源数据库的序列“翻译”成目标数据库的序列,实现数据库序列的迁移,操作复杂,如果源数据库存在大量的序列需要迁移,手工操作容易出错,效率低,延长了数据库序列的迁移周期。
发明内容
为至少在一定程度上克服相关技术存在的问题,本申请提供一种数据库序列迁移的方法及电子设备。
本申请的技术方案如下:
一种数据库序列迁移的方法,包括:
获取源数据库中待迁移的数据库序列的属性信息,作为第一属性信息;
根据所述第一属性信息,确定与目标数据库匹配的第二属性信息;以及根据所述第二属性信息,在所述目标数据库中创建与所述第二属性信息匹配的数据库序列,作为迁移后的数据库序列。
可选的,所述第一属性信息和所述第二属性信息均包括:第一部分信息、第二部分信息和第三部分信息,所述根据所述第一属性信息,确定与目标数据库匹配的第二属性信息,包括:
根据所述第一属性信息和目标数据库所支持的数据库序列的特性,确定所述第二属性信息中的第一部分信息;
对所述第一属性信息中的第二部分信息进行匹配处理,将所述第一属性信息中匹配处理后的第二部分信息确定为所述第二属性信息中的第二部分信息;
将所述第一属性信息中的第三部分信息确定为第二属性信息中的第三部分信息。
可选的,所述第一部分信息包括:数据类型;和/或,所述第二部分信息包括如下项中的至少一项:取值范围值、起始值、数据长度,所述取值范围值包括最大值和最小值;和/或,所述第三部分信息包括如下项中的至少一项:序列名、增量值、是否循环使用数据值、缓存序列值个数、是否按照请求的顺序生成值。
可选的,在所述第一部分信息包括数据类型,且所述第二部分信息包括取值范围值时,所述根据所述第一属性信息和目标数据库所支持的数据库序列的特性,确定第二属性信息中的第一部分信息,包括:
根据第一属性信息中的取值范围值、目标数据库所支持的数据类型及其取值范围值,确定第二属性信息中的数据类型。
可选的,所述目标数据库所支持的数据类型包括:支持明确指定的数据类型,或者,支持不明确指定数据类型时所对应的隐式类型。
可选的,所述根据第一属性信息中的取值范围值、目标数据库所支持的数据类型及其取值范围值,确定第二属性信息中的数据类型,包括:
计算所述第一属性信息中的取值范围最小值和最大值的绝对值,将绝对值最大的数值作为第一最大值;
针对目标数据库所支持的数据类型,按照数据类型的取值范围从小到大的顺序,选择目标数据库所支持的一种数据类型作为当前数据类型,将当前数据类型的最大值作为第二最大值,并执行如下步骤:
如果所述第一最大值小于或等于所述第二最大值,则将所述当前数据类型确定为所述第二属性信息中的数据类型,并停止所述第二属性信息中的数据类型的选择过程;
如果所述第一最大值大于所述第二最大值,则重新选择当前数据类型直至找到合适的数据类型作为所述第二属性信息中的数据类型或者目标数据库所支持的数据类型全部被选择完毕,若选择完毕,则将选择过程中最后的当前数据类型作为所述第二属性信息中的数据类型。
可选的,在所述第一部分信息包括数据类型,且所述第二部分信息包括取值范围值时,所述对所述第一属性信息中的第二部分信息进行匹配处理,包括:
如果所述第一属性信息取值范围值的最大值大于所确定的所述第二属性信息中的数据类型所支持的最大值,将所确定的所述第二属性信息中的数据类型所支持的最大值确定为所述第二属性信息取值范围值的最大值,否则,将所述第一属性信息取值范围值的最大值确定为所述第二属性信息取值范围值的最大值;和/或,
如果所述第一属性信息取值范围值的最小值小于所确定的所述第二属性信息中的数据类型所支持的最小值,将所确定的所述第二属性信息中的数据类型所支持的最小值确定为所述第二属性信息取值范围值的最小值,否则,将所述第一属性信息取值范围值的最小值确定为所述第二属性信息取值范围值的最小值。
可选的,在所述第一部分信息包括数据类型,且所述第二部分信息包括起始值,且所述第三部分信息包括增量值时,所述对所述第一属性信息中的第二部分信息进行匹配处理,包括:
如果所述第一属性信息中的起始值大于或等于所确定的所述第二属性信息中的取值范围值的最小值,且,所述第一属性信息中的起始值小于或等于所确定的所述第二属性信息中的取值范围值的最大值,则将所述第一属性信息中的起始值确定为所述第二属性信息中的起始值;否则:
在所述第二属性信息中的增量值大于0时,将所确定的所述第二属性信息中的取值范围值的最小值确定为所述第二属性信息中的起始值;
在所述第二属性信息中的增量值小于0时,将所确定的所述第二属性信息中的取值范围值的最大值确定为所述第二属性信息中的起始值。
可选的,所述根据所述第二属性信息,在所述目标数据库中创建与所述第二属性信息匹配的数据库序列,包括:
根据所述第二属性信息,生成序列创建语句;
在所述目标数据库中执行所述序列创建语句,得到与所述第二属性信息匹配的数据库序列。
一种电子设备,包括:
处理器,以及与所述处理器相连接的存储器;
所述存储器用于存储计算机程序;
所述处理器用于调用并执行所述存储器中的所述计算机程序,以执行如以上任一项所述的数据库序列迁移的方法。
本申请的实施例提供的技术方案可以包括以下有益效果:
由于数据库序列可以通过属性信息表现出来,基于此,本实施例提供一种自动迁移数据库序列的方案,通过获取源数据库中待迁移的数据库序列的属性信息,就可以得到以属性信息表现的源数据库的序列,将源数据库中待迁移的数据库序列的属性信息作为第一属性信息,根据该第一属性信息确定与目标数据库匹配的第二属性信息,确定的第二属性信息是第一属性信息在目标数据库中的表现形式,相应的,根据第二属性信息,在目标数据库中创建与第二属性信息匹配的序列,得到的与第二属性信息匹配的序列也就是源数据库中的数据库序列在目标数据库中的表现形式,作为迁移后的数据库序列,从而实现了数据库序列的迁移,如此,通过对属性信息的转换,实现在同构或异构数据库之间的自动迁移,与上述相关技术中手工操作的方式相比,不仅准确而且简单,大幅提升了迁移效率,减少了迁移的时间周期。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是本申请一个实施例提供的一种数据库序列迁移的方法的流程图。
图2是本申请一个实施例提供的一种确定与目标数据库匹配的第二属性信息的方法流程图。
图3是本申请一个实施例提供的确定第二属性信息中的数据类型的方法流程图。
图4是本申请另一个实施例提供的确定第二属性信息中的数据类型的方法流程图。
图5是本申请一个实施例提供的确定第二属性信息取值范围值的最小值的方法流程图。
图6是本申请一个实施例提供的确定第二属性信息取值范围值的最大值的方法流程图。
图7是本申请一个实施例提供的确定第二属性信息中的增量值的方法流程图。
图8是本申请一个实施例提供的电子设备的结构示意图。
具体实施方式
这里将对示例性实施例进行详细说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的设备和方法的例子。
参见图1,是本申请一个实施例提供的一种数据库序列迁移的方法的流程图。如图1所示,本实施例提供的一种数据库序列迁移的方法,至少包括如下步骤:
步骤11、获取源数据库中待迁移的数据库序列的属性信息,作为第一属性信息。
步骤12、根据第一属性信息,确定与目标数据库匹配的第二属性信息。
步骤13、根据第二属性信息,在目标数据库中创建与第二属性信息匹配的数据库序列,作为迁移后的数据库序列。
其中,源数据库和目标数据库可以是同构数据库,也可以是异构数据库。
由于数据库序列可以通过属性信息表现出来,基于此,本实施例提供一种自动迁移数据库序列的方案,通过获取源数据库中待迁移的数据库序列的属性信息,就可以得到以属性信息表现的源数据库的序列,将源数据库中待迁移的数据库序列的属性信息作为第一属性信息,根据该第一属性信息确定与目标数据库匹配的第二属性信息,确定的第二属性信息是第一属性信息在目标数据库中的表现形式,相应的,根据第二属性信息,在目标数据库中创建与第二属性信息匹配的序列,得到的与第二属性信息匹配的序列也就是源数据库中的数据库序列在目标数据库中的表现形式,作为迁移后的数据库序列,从而实现了数据库序列的迁移,如此,通过对属性信息的转换,实现数据库序列在同构或异构数据库之间的自动迁移,与上述相关技术中手工操作的方式相比,不仅准确而且简单,大幅提升了迁移效率,减少了迁移的时间周期。
本实施例的方案尤其解决了异构数据库之间数据库序列迁移的难题。
本实施例的方案可以作为两种数据库之间专用数据库序列迁移程序,也可以作为通用数据库迁移软件的数据库序列迁移适配器,针对特定数据库实现数据库序列的迁移。
对于同构数据库系统来说,属性信息在源数据库和目标数据库是通用的,相应的,上述步骤12中,根据第一属性信息,确定与目标数据库匹配的第二属性信息,具体可以是:将第一属性信息直接作为与目标数据库匹配的第二属性信息,无需做额外的处理。
对于异构数据库系统来说,属性信息中,有些信息是在各数据库之间通用的,有些信息则需要进行转换,基于属性信息的这一特点,可选的,上述第一属性信息和上述第二属性信息均包括:第一部分信息、第二部分信息和第三部分信息,相应的,如图2所示,上述步骤12中,根据第一属性信息,确定与目标数据库匹配的第二属性信息,其中一种具体实现方式可以是:
步骤21、根据第一属性信息和目标数据库所支持的数据库序列的特性,确定第二属性信息中的第一部分信息;
步骤22、对第一属性信息中的第二部分信息进行匹配处理,将第一属性信息中匹配处理后的第二部分信息确定为第二属性信息中的第二部分信息;
步骤23、将第一属性信息中的第三部分信息确定为第二属性信息中的第三部分信息。
上述第一部分信息是因数据库系统不同,可能存在差异的部分,上述第二部分信息是因第一部分信息不同,可能存在差异的部分。上述第三部分信息是各数据库系统之间通用的部分。本实施例中,第三部分信息无需处理,仅对第一部分信息和第二部分信息进行相应的处理,使得第二属性信息匹配目标数据库。如此,仅对属性信息中的一部分信息做处理,提高了处理效率。
一般,数据库序列是一组用于获取等差数列的数值。数据库序列的属性信息包括以下项中的至少一项:序列名、数据类型、起始值、增量值、取值范围值(包括最小值和最大值)、是否循环使用数据值、缓存序列值个数以及是否按照请求的顺序生成值等。下面对这些属性信息进行简单介绍。
其中,序列名是给数据库序列取的名称,通过序列名操作序列,如访问数据库序列的当前值和下一个值,修改或删除序列,都要通过序列名进行操作。
关于数据类型,有些数据库在创建序列时支持明确指定的数据类型,比如DB2、Java DB等数据库,DB2数据库支持明确指定的smallint,integer,bigint以及不带小数点的decimal类型,有些数据库则没有明确指定的数据类型,但后台会有一个隐式类型,如Oracle数据库的隐式类型为不带小数点的number类型,PostgreSQL数据库的隐式类型为bigint类型。
由于数据库序列实际上执行等差数列的操作,相应的:起始值就是等差数列的首项;增量值就是等差数列的公差,正数表示数据库序列为升序序列,负数表示数据库序列为降序序列;取值范围值,对数据库序列对象,是由开发人员根据业务需求指定的一个取值范围;而对数据库管理系统的数据类型而言,数据类型不同,相应的取值范围不同,取值范围值也不同,最小值就是取值范围值中的最小值,在降序序列中,不能生成比最小值更小的值,最大值就是取值范围值中的最大值,在升序序列中,不能生成比最大值更大的值。关于是否循环使用数据值,如果循环使用数据值,对于升序序列来说,当达到了最大值之后,下一个值将会是其最小值,对于降序序列来说,达到最小值之后,下一个值为其最大值,如果非循环使用数据值,当达到序列的边界值之后,就不再产生新的序列值。
其中,缓存序列值个数表示每次应用本数据库序列的时候,预先生成并存放在内存中的序列值个数,其作用是为了减少数据库操作。
其中,是否按照请求的顺序生成值,决定是否按照调用取值函数如nextval函数的先后顺序返回序列值。其中,nextval函数可以调用下一个值。
参考以上对属性信息的介绍,可选的,第一部分信息包括:数据类型;和/或,第二部分信息包括如下项中的至少一项:取值范围值、起始值、数据长度,取值范围值包括最大值和最小值;和/或,第三部分信息包括如下项中的至少一项:序列名、增量值、是否循环使用数据值、缓存序列值个数、是否按照请求的顺序生成值。由于数据类型因数据库的系统不同,可能会存在差异,因而作为第一部分信息,相应的,因数据类型的不同,取值范围值、起始值、数据长度,可能会存在差异,因而作为第二部分信息,其余信息,比如序列名、增量值、是否循环使用数据值、缓存序列值个数、是否按照请求的顺序生成值,一般是通用的,因而作为第三部分信息。
基于此,一些实施例中,在第一部分信息包括数据类型,且第二部分信息包括取值范围值时,根据第一属性信息和目标数据库所支持的数据库序列特性,确定第二属性信息中的第一部分信息,具体实现方式可以是:根据第一属性信息中的取值范围值、目标数据库所支持的数据类型及其取值范围值,确定第二属性信息中的数据类型。其中,目标数据库所支持的数据类型包括:支持明确指定的数据类型,或者,支持没有明确指定数据类型时所对应的隐式类型。具体的,如图3所示,确定第二属性信息中的数据类型的步骤如下:
步骤31、计算第一属性信息中的取值范围值最大值和最小值的绝对值,将绝对值最大的数值作为第一最大值。
具体的,计算第一属性信息中的取值范围值的最大值的绝对值,作为第一绝对值,计算第一属性信息中的取值范围值的最小值的绝对值,作为第二绝对值,取第一绝对值和第二绝对值中较大的一个数值作为第一最大值。
步骤32、针对目标数据库所支持的数据类型,按照数据类型的取值范围从小到大的顺序,选择目标数据库所支持的一种数据类型作为当前数据类型,将当前数据类型的最大值作为第二最大值;并执行如下步骤33和步骤34。
步骤33、如果第一最大值小于或等于第二最大值,则将当前数据类型确定为第二属性信息中的数据类型,并停止第二属性信息中的数据类型的选择过程。
步骤34、如果第一最大值大于第二最大值,则重新选择当前数据类型直至找到合适的数据类型作为第二属性信息中的数据类型或者直至目标数据库所支持的数据类型全部被选择完毕,若选择完毕,则将选择过程中最后的当前数据类型作为第二属性信息中的数据类型。
如果第一最大值大于第二最大值,说明第一属性信息中的数据类型的取值范围超出目标数据库中当前处理的数据类型的取值范围,不适用,需要选择更大的取值范围的数据类型,如果选择完毕之后,仍没有找到适用的数据类型,可以将选择过程中最后的当前数据类型确定为第二属性信息中的数据类型,也就是说,选择目标数据库所支持的数据类型中取值范围最大的数据类型作为第二属性信息中的数据类型。
本实施例中,对于超出目标数据库的取值范围的数据类型,仍然能够实现数据库序列的迁移,而不是简单的报错或者不对序列进行迁移。
可选的,将当前数据类型的最大值作为第二最大值之后,还需要比较第一最大值与第二最大值的大小,具体的,可以是判断第一最大值是否小于或者等于第二最大值,或者,也可以是判断第一最大值是否大于第二最大值。
如图4所示,步骤32到步骤33的一种具体的实现方式可以是:
步骤41、针对目标数据库所支持的数据类型,按照数据类型的取值范围从小到大的顺序,选择一种目标数据库所支持的数据类型作为当前数据类型,执行步骤42。
步骤42、将当前数据类型的最大值作为第二最大值,执行步骤43。
步骤43、判断第一最大值是否大于第二最大值,如果是,则执行步骤44,否则,执行步骤45。
步骤44、判断目标数据库是否存在比当前数据类型的取值范围更大的数据类型,如果是,则执行步骤41,重新选择当前数据类型,否则,执行步骤45。
步骤45、将当前数据类型确定为第二属性信息中的数据类型,并停止第二属性信息中的数据类型的选择过程。
本实施例中的方式可以准确的确定最合适的数据类型。
一些实施例中,在第一部分信息包括数据类型,且第二部分信息包括取值范围值时,步骤22中,对第一属性信息中的第二部分信息进行匹配处理,其实现方式可以是:
如果第一属性信息取值范围值的最大值大于所确定的第二属性信息中的数据类型所支持的最大值,说明第一属性信息中的数据类型的取值范围超出目标数据库中所支持的数据类型的取值范围,需要以目标数据库为准,将所确定的第二属性信息中的数据类型所支持的最大值确定为第二属性信息取值范围值的最大值,否则,将第一属性信息取值范围值的最大值确定为第二属性信息取值范围值的最大值;和/或,
如果第一属性信息取值范围值的最小值小于所确定的第二属性信息中的数据类型所支持的最小值,说明第一属性信息中的数据类型的取值范围超出目标数据库中所支持的数据类型的取值范围,需要以目标数据库为准,将所确定的第二属性信息中的数据类型所支持的最小值确定为第二属性信息取值范围值的最小值,否则,将第一属性信息取值范围值的最小值确定为第二属性信息取值范围值的最小值。
可选的,本实施例的方法还可以包括:比较第一属性信息取值范围值的最大值与确定的第二属性信息中的数据类型所支持的最大值的大小,具体的:判断第一属性信息取值范围值的最大值是否大于所确定的第二属性信息中的数据类型所支持的最大值,或者,判断第一属性信息取值范围值的最大值是否小于确定的第二属性信息中的数据类型所支持的最大值。
可选的,本实施例的方法还可以包括:比较第一属性信息取值范围值的最小值与所确定的第二属性信息中的数据类型所支持的最小值的大小,具体的:判断第一属性信息取值范围值的最小值是否小于所确定的第二属性信息中的数据类型所支持的最小值,或者,判断第一属性信息取值范围值的最小值是否大于所确定的第二属性信息中的数据类型所支持的最小值。
基于此,如图5所示,以下对步骤22中确定第二属性信息取值范围值的最小值的一种具体实现方式进行举例说明:
步骤51、获取第一属性信息取值范围值的最小值,执行步骤52。
步骤52、获取所确定的第二属性信息中的数据类型所支持的最小值,执行步骤53。
步骤53、判断第一属性信息取值范围值的最小值是否小于所确定的第二属性信息中的数据类型所支持的最小值,如果是,执行步骤54,否则,执行步骤55。
步骤54、将所确定的第二属性信息中的数据类型所支持的最小值确定为第二属性信息取值范围值的最小值。
步骤55、将第一属性信息取值范围值的最小值确定为第二属性信息取值范围值的最小值。
如图6所示,以下对步骤22中确定第二属性信息取值范围值的最大值的一种具体实现方式进行举例说明:
步骤61、获取第一属性信息取值范围值的最大值。
步骤62、获取所确定的第二属性信息中的数据类型所支持的最大值,执行步骤63。
步骤63、判断第一属性信息取值范围值的最大值是否大于所确定的第二属性信息中的数据类型所支持的最大值,如果是,执行步骤64,否则,执行步骤65。
步骤64、将所确定的第二属性信息中的数据类型所支持的最大值确定为第二属性信息取值范围值的最大值。
步骤65、将第一属性信息取值范围值的最大值确定为第二属性信息取值范围值的最大值。
本实施例中的方式可以准确的确定取值范围值的最大值和最小值。
一些实施例中,第一部分信息包括数据类型,且第二部分信息包括起始值,且第三部分信息包括增量值时,上述步骤22中,对第一属性信息中的第二部分信息进行匹配处理,其实现方式可以是:
如果第一属性信息中的起始值大于或等于所确定的第二属性信息中的取值范围值的最小值,且,第一属性信息中的起始值小于或等于所确定的第二属性信息中的取值范围值的最大值,说明第一属性信息中的起始值未超出第二属性信息中的数据类型的取值范围,则将第一属性信息中的起始值确定为第二属性信息中的起始值;否则:
在第二属性信息中的增量值大于0时,说明源数据库的待迁移的序列为升序序列,将所确定的第二属性信息中的取值范围值的最小值确定为第二属性信息中的起始值;
在第二属性信息中的增量值小于0时,说明源数据库的待迁移的序列为降序序列,将所确定的第二属性信息中的取值范围值的最大值确定为第二属性信息中的起始值。
可选的,本实施例的方法还可以包括:比较第一属性信息中的起始值与确定的第二属性信息中的取值范围值最大值和最小值的大小关系,具体的:判断第一属性信息中的起始值是否大于或等于所确定的第二属性信息中的取值范围值的最小值,且,第一属性信息中的起始值小于或等于所确定的第二属性信息中的取值范围值的最大值;或者,判断第一属性信息中的起始值是否小于所确定的第二属性信息中的取值范围值的最小值,或者,大于所确定的第二属性信息中的取值范围值的最大值。
可选的,本实施例的方法还可以包括:比较第二属性信息中的增量值与0的大小关系,具体的:判断第二属性信息中的增量值是否大于0,或者,判断第二属性信息中的增量值是否小于0。
基于此,如图7所示,以下对步骤22的一种具体实现方式进行举例说明:
步骤71、获取第一属性信息中的起始值,执行步骤72。
步骤72、判断第一属性信息中的起始值是否大于或等于所确定的第二属性信息中的取值范围值的最小值,且,第一属性信息中的起始值小于或等于所确定的第二属性信息中的取值范围值的最大值,如果是,执行步骤76,否则,执行步骤73。
步骤73、判断第二属性信息中的增量值是否大于0,如果是,执行步骤74,否则,执行步骤75。
步骤74、将所确定的第二属性信息中的取值范围值的最小值确定为第二属性信息中的起始值。
步骤75、将所确定的第二属性信息中的取值范围值的最大值确定为第二属性信息中的起始值。
步骤76、将第一属性信息中的起始值确定为第二属性信息中的起始值。
本实施例中的方式可以准确的确定起始值。
有些数据类型不用明确指定数据长度,而有些数据类型则需要明确指定数据长度,因此在属性信息中包括数据长度。基于此,一些实施例中,在第一部分信息包括数据类型,且第二部分信息包括数据长度,步骤22中,对第一属性信息中的第二部分信息进行匹配处理,其实现方式可以是:根据所确定的第二属性信息中的数据类型,确定第二属性信息中的数据长度。
一些实施例中,步骤13中,根据第二属性信息,在目标数据库中创建与第二属性信息匹配的数据库序列,其具体实现方式有多种,比如,其中一种具体实现方式可以是:根据第二属性信息,生成序列创建语句;在目标数据库中执行序列创建语句,得到与第二属性信息匹配的数据库序列。其中,序列创建语句跟目标数据库支持的语句匹配,可以但不限于为数据库模式语言(Data Definition Language,DDL)语句,也可以采用其它与目标数据库匹配的语句。
下面以源数据库为Oracle数据库,目标数据库为DB2和PostgreSQL数据库为例,对本申请实施例提供的数据库序列迁移的方法进行更加详细的说明。
本实施例中,数据库序列的属性信息包括:第一部分信息,第二部分信息和第三部分信息。第一部分信息包括:数据类型;第二部分信息包括:取值范围值、起始值、数据长度,取值范围值包括最大值和最小值;第二部分信息包括:序列名、增量值、是否循环使用数据值、缓存序列值个数、是否按照请求的顺序生成值。
Oracle数据库序列不支持明确指定数据类型,对应的隐式类型为不带小数点的number类型,number类型取值范围值中的最小值为-99999999999999999999999999(即26个9),最大值为9999999999999999999999999999(即28个9)。
Oracle数据库的数据库序列保存在系统视图dba_sequences中,如果用Java实现本发明,则可以使用JDBC从dba_sequences系统视图查询所有数据库序列或某个用户的数据库序列,将查询到的数据库序列的第一属性信息保存起来,作为名为DBSequence的Java类的实例,一个数据库序列对应于一个DBSequence实例,多个数据库序列的DBSequence实例存放在Java的集合对象中。下面三个表是从Oracle数据库获取到的数据库序列1~3的第一属性信息。
数据库序列1的第一属性信息
数据库序列2的第一属性信息
属性名 | 属性值 |
序列名 | Seq2 |
数据类型 | 不适用 |
数据长度 | 不适用 |
起始值 | -999999 |
增量值 | 1 |
最小值 | -999999 |
最大值 | 9999 |
是否循环使用数据值 | true |
缓存序列值个数 | 10 |
是否按照请求的顺序生成值 | true |
数据库序列3的第一属性信息
DB2数据库序列支持smallint,integer,bigint,不带小数点的decimal类型,要将数据库序列1从Oracle数据库迁移到DB2数据库,包括以下步骤:
步骤一、在内存中保存数据库序列1的第一属性信息;
步骤二、根据第一属性信息和目标数据库所支持的数据库序列的特性,确定第二属性信息中的第一部分信息;
IBM DB2数据库序列支持smallint,integer,bigint,不带小数点的decimal四种类型,需要参考图3和图4所示的确定第二属性信息中的数据类型的方法实施例,确定最合适的数据类型。
数据库序列1的最小值为1,其绝对值为1,最大值为9999,其绝对值为9999,取两个绝对值中较大的一个作为第一最大值,此处第一最大值为9999。IBM DB2数据库序列支持的数据类型中取值范围最小的是smalllint类型,首先选择smalllint类型作为当前数据类型,获取smalllint数据类型在IBM DB2数据库允许的最大值32367作为第二最大值;此时,第一最大值(9999)小于第二最大值(32767),说明数据库序列1的取值范围没有超出smallint数据类型的取值范围,将第二属性信息中的数据类型确定为smallint数据类型。
步骤三、对第一属性信息中的第二部分信息进行匹配处理,将第一属性信息中的匹配处理后的第二部分信息确定为第二属性信息中的第二部分信息。
参考图5和图6所示的步骤确定第二属性信息取值范围值的最小值和最大值:
获取数据库序列1的最小值,此处的最小值为1;获取步骤二所确定的第二属性信息中的smallint数据类型在目标数据库中允许的最小值,此处的最小值为-32768;此时,数据库序列1的最小值(1)大于所确定的第二属性信息中的smallint数据类型在目标数据库中允许的最小值(-32768),说明数据库序列1的最小值在smallint类型取值范围之内,将第一属性信息取值范围值的最小值(1)确定为第二属性信息取值范围值的最小值;
获取数据库序列1的最大值,此处数据库序列1的最大值为9999;获取步骤二所确定的第二属性信息中的smallint数据类型在目标数据库中允许的最大值,此处的最大值为32767;此时,数据库序列1的最大值(9999)小于所确定的第二属性信息中的smallint数据类型在目标数据库中允许的最大值(32767),说明数据库序列1的最大值在smallint类型取值范围之内,将第一属性信息取值范围值的最大值(9999)确定为第二属性信息取值范围值的最大值。
参考图7所示的步骤确定第二属性信息中的起始值:
获取数据库序列1的起始值,此处为1;此时,数据库序列1的起始值等于所确定的第二属性信息取值范围值的最小值(1)并且小于第二属性信息取值范围值的最大值(9999),说明起始值在第二属性信息的取值范围之内,将第一属性信息中的起始值1确定为第二属性信息中的起始值。
步骤四、将第一属性信息中的第三部分信息确定为第二属性信息中的第三部分信息。
经过本步骤的处理,第二属性信息如下表(处理过程中出现变化的属性值以斜体字表示):
与数据库序列1对应的第二属性信息
属性名 | 属性值 |
序列名 | Seq1 |
数据类型 | Smallint |
数据长度 | 不适用 |
起始值 | 1 |
增量 | 1 |
最小值 | 1 |
最大值 | 9999 |
是否循环使用数据值 | False |
缓存序列值个数 | 1 |
是否按照请求的顺序生成值 | false |
步骤五、按照DB2数据库创建序列的语法规则,根据第二属性信息,生成序列创建语句。
本步骤中生成DDL语句如下:
create sequence Seq1
as smallint
start with 1
increment by 1
minvalue 1
maxvalue 9999
no cycle
no cache
no order
步骤六、在目标数据库中执行序列创建语句,得到与第二属性信息匹配的数据库序列。
本步骤中,在目标数据库执行步骤五中的DDL语句,完成将数据库序列1迁移到DB2数据库的过程。
同理,如果将数据库序列2从Oracle数据库迁移到DB2数据库,包括以下步骤:
步骤一、在内存中保存数据库序列2的第一属性信息;
步骤二、根据第一属性信息和目标数据库所支持的数据库序列的特性,确定第二属性信息中的第一部分信息;
IBM DB2数据库序列支持smallint,integer,bigint,不带小数点的decimal四种类型,需要参考图3和图4所示的确定第二属性信息中的数据类型的方法实施例,确定最合适的数据类型。
数据库序列2的最小值为-999999,其绝对值为999999,最大值为9999,其绝对值为9999,取两个绝对值中较大的一个作为第一最大值,此处第一最大值为999999。IBM DB2数据库序列支持的数据类型中取值范围最小的是smalllint类型,首先选择smalllint类型作为当前数据类型,获取smalllint数据类型在IBM DB2数据库允许的最大值32367作为第二最大值;此时,第一最大值(99999)大于第二最大值(32767),说明数据库序列2的取值范围超出smallint数据类型的取值范围,选择比smalllint类型取值范围更大的integer类型作为当前数据类型,获取integer数据类型在IBM DB2数据库允许的最大值2147483647作为第二最大值,此时,第一最大值(999999)小于第二最大值(2147483647),说明数据库序列2的取值范围在integer类型取值范围之内,将第二属性信息中的数据类型确定为integer数据类型。
步骤三、对第一属性信息中的第二部分信息进行匹配处理,将第一属性信息中匹配处理后的第二部分信息确定为第二属性信息中的第二部分信息。
参考图5和图6所示的步骤确定第二属性信息取值范围值的最小值和最大值:
获取数据库序列2的最小值,此处的最小值为-999999;获取步骤二所确定的第二属性信息中的integer数据类型在目标数据库中允许的最小值,此处的最小值为-2147483648;此时,数据库序列2的最小值(-999999)大于所确定的第二属性信息中的smallint数据类型在目标数据库中允许的最小值(-2147483648),说明数据库序列2的最小值在integer类型取值范围之内,将第一属性信息取值范围值的最小值(-999999)确定为第二属性信息取值范围值的最小值;
获取数据库序列2的最大值,此处数据库序列2的最大值为9999;获取步骤二所确定的第二属性信息中的integer数据类型在目标数据库中允许的最大值,此处的最大值为2147483647;此时,数据库序列2的最大值(9999)小于所确定的第二属性信息中的smallint数据类型在目标数据库中允许的最大值(2147483647),说明数据库序列2的最大值在integer类型取值范围之内,将第一属性信息取值范围值的最大值(9999)确定为第二属性信息取值范围值的最大值。
参考图7所示的步骤确定第二属性信息中的起始值:
获取数据库序列2的起始值,此处为-999999;此时,数据库序列2的起始值等于所确定的第二属性信息取值范围值的最小值(-999999)并且小于第二属性信息取值范围值的最大值(9999),说明起始值在第二属性信息的取值范围之内,将第一属性信息中的起始值-999999确定为第二属性信息中的起始值。
步骤四、将第一属性信息中的第三部分信息确定为第二属性信息中的第三部分信息。
经过本步骤的处理,第二属性信息如下表(处理过程中出现变化的属性值以斜体字表示):
与数据库序列2对应的第二属性信息
属性名 | 属性值 |
序列名 | Seq2 |
数据类型 | integer |
数据长度 | 不适用 |
起始值 | -999999 |
增量 | 1 |
最小值 | -999999 |
最大值 | 9999 |
是否循环使用数据值 | true |
缓存序列值个数 | 10 |
是否按照请求的顺序生成值 | true |
步骤五、按照DB2数据库创建序列的语法规则,根据第二属性信息,生成序列创建语句。
本步骤中生成DDL语句如下:
create sequence Seq2
as integer
start with-999999
increment by 1
minvalue-999999
maxvalue 9999
cycle
cache 10
order
步骤六、在目标数据库中执行序列创建语句,得到与第二属性信息匹配的数据库序列。
本步骤中,在目标数据库执行步骤五生成的DDL语句,完成将数据库序列2迁移到DB2数据库的过程。
同理,如果将数据库序列3从Oracle数据库迁移到DB2数据库,包括以下步骤:
步骤一、在内存中保存数据库序列3的第一属性信息;
步骤二、根据第一属性信息和目标数据库所支持的数据库序列的特性,确定第二属性信息中的第一部分信息;
IBM DB2数据库序列支持smallint,integer,bigint,不带小数点的decimal四种类型,需要参考图3和图4所示的确定第二属性信息中的数据类型的方法实施例,确定最合适的数据类型。
数据库序列3的最小值为-99999999999999999999999999(即26个9),其绝对值为99999999999999999999999999(即26个9),最大值为9999999999999999999999999999(即28个9),其绝对值为9999999999999999999999999999(即28个9),取两个绝对值中较大的一个作为第一最大值,此处第一最大值为9999999999999999999999999999(即28个9)。IBM DB2数据库序列支持的取值范围最小的是smalllint类型,首先选择smalllint类型作为当前数据类型,获取smalllint数据类型在IBM DB2数据库允许的最大值32367作为第二最大值;此时,第一最大值9999999999999999999999999999(即28个9)大于第二最大值32767,说明数据库序列3的取值范围超出smallint数据类型的取值范围;选择比smalllint类型取值范围更大的integer类型作为当前数据类型,获取integer数据类型在IBM DB2数据库允许的最大值2147483647作为第二最大值,此时,第一最大值9999999999999999999999999999(即28个9)大于第二最大值2147483647,说明数据库序列3的取值范围超出integer类型取值范围;选择比integer类型取值范围更大的bigint类型作为当前数据类型,获取bigint数据类型在IBM DB2数据库允许的最大值9223372036854775807作为第二最大值,此时,第一最大值9999999999999999999999999999(即28个9)大于第二最大值9223372036854775807,说明数据库序列3的取值范围超出bigint类型取值范围;此时只能尝试可定制长度的decimal类型,decimal类型最长允许31位整数,本实施例第一最大值共28位,因此decimal类型能够容纳的小源数据库序列的取值范围,此处将第二属性信息中的数据类型确定为28位整数,0位小数的decimal数据类型,即decimal(28,0)数据类型。
步骤三、对第一属性信息中的第二部分信息进行匹配处理,将第一属性信息中匹配处理后的第二部分信息确定为第二属性信息中的第二部分信息。
参考图5和图6所示的步骤确定第二属性信息取值范围值的最小值和最大值:
获取数据库序列3的最小值,此处的最小值为-99999999999999999999999999(即26个9);获取步骤二所确定的第二属性信息中的decimal(28,0)数据类型在目标数据库中允许的最小值,此处的最小值为-9999999999999999999999999999(即28个9);此时,数据库序列3的最小值-99999999999999999999999999(即26个9)大于所确定的第二属性信息中的decimal(28,0)数据类型在目标数据库中允许的最小值-9999999999999999999999999999(即28个9),说明数据库序列3的最小值在decimal(28,0)类型取值范围之内,将第一属性信息取值范围值的最小值-99999999999999999999999999(即26个9)确定为第二属性信息取值范围值的最小值;
获取数据库序列3的最大值,此处数据库序列3的最大值为9999999999999999999999999999(即28个9);获取步骤二所确定的第二属性信息中的decimal(28,0)数据类型在目标数据库中允许的最大值,此处数据库序列3的最大值为9999999999999999999999999999(即28个9);此时,数据库序列3的最大值9999999999999999999999999999(即28个9)等于所确定的第二属性信息中的decimal(28,0)数据类型在目标数据库中允许的最大值9999999999999999999999999999(即28个9),说明数据库序列3的最大值在decimal类型取值范围之内,将第一属性信息取值范围值的最大值9999999999999999999999999999(即28个9)确定为第二属性信息取值范围值的最大值。
参考图7所示的步骤确定第二属性信息中的起始值:
获取数据库序列3的起始值,此处为-99999999999999999999999999(即26个9);此时,数据库序列3的起始值等于所确定的第二属性信息中的取值范围值的最小值-99999999999999999999999999(即26个9)并且小于所确定的第二属性信息中的取值范围值的最大值9999999999999999999999999999(即28个9),说明起始值在第二属性信息的取值范围之内,将第一属性信息中的起始值-99999999999999999999999999(即26个9)确定为第二属性信息中的起始值。
本步骤中确定的数据类型的范围较大,通过数据长度体现,将数据长度确定为28。
步骤四、将第一属性信息中的第三部分信息确定为第二属性信息中的第三部分信息。
经过本步骤的处理,第二属性信息如下表(处理过程中出现变化的属性值以斜体字表示):
与数据库序列3对应的第二属性信息
步骤五、按照DB2数据库创建序列的语法规则,根据第二属性信息,生成序列创建语句。
本步骤中生成DDL语句如下:
create sequence Seq3
as decimal(28,0)
start with-99999999999999999999999999
increment by 1
minvalue-99999999999999999999999999
maxvalue 9999999999999999999999999999
cycle
cache 10
order
步骤六、在目标数据库中执行序列创建语句,得到与第二属性信息匹配的数据库序列。
本步骤中,在目标数据库执行步骤五中生成的DDL语句,完成将数据库序列3迁移到DB2数据库的过程。
前面描述了使用本申请实施例将三个Oracle数据库序列迁移到DB2的迁移过程。下面以PostgreSQL作为目标数据库,对本申请实施例提供的数据库序列迁移的方法进行进一步说明。
PostgreSQL数据库序列不支持明确指定数据类型,对应的隐式类型为bigint类型,PostgreSQL数据库序列的最大取值范围即为bigint类型的取值范围,如果将数据库序列3从Oracle数据库迁移到PostgreSQL数据库,包括以下步骤:
步骤一、在内存中保存数据库序列3的第一属性信息;
步骤二、根据第一属性信息和目标数据库所支持的数据库序列的特性,确定第二属性信息中的第一部分信息。
由于PostgreSQL数据库序列不支持明确指定的数据类型,有对应的隐式类型bigint类型。无需执行图3和图4所示的确定第二属性信息中的数据类型的方法实施例确定最合适的数据类型。
步骤三、对第一属性信息中的第二部分信息进行匹配处理,将第一属性信息中匹配处理后的第二部分信息确定为第二属性信息中的第二部分信息。
参考图5和图6所示的步骤确定第二属性信息取值范围值的最小值和最大值:
获取数据库序列3的最小值,此处的最小值为-99999999999999999999999999(即26个9);获取步骤二所确定的第二属性信息中的bigint类型在目标数据库中允许的最小值,此处的最小值为-9223372036854775808;此时,数据库序列3的最小值-99999999999999999999999999(即26个9)小于所确定的第二属性信息中的bigint类型在目标数据库中允许的最小值-9223372036854775808,说明数据库序列3的最小值超出PostgreSQL数据库允许的取值范围,将目标数据库中允许的最小值-9223372036854775808确定为第二属性信息取值范围值的最小值;
获取数据库序列3的最大值,此处数据库序列3的最大值为9999999999999999999999999999(即28个9);获取步骤二所确定的第二属性信息中的bigint类型在目标数据库中允许的最大值,此处数据库序列3的最大值为9223372036854775807;此时,数据库序列3的最大值9999999999999999999999999999(即28个9)大于所确定的第二属性信息中的bigint类型在目标数据库中允许的最大值9223372036854775807,说明数据库序列3的最大值超出PostgreSQL数据库序列允许的取值范围,将目标数据库中允许的最大值9223372036854775807确定为第二属性信息取值范围值的最大值。
参考图7所示的步骤确定第二属性信息中的起始值:
获取数据库序列3的起始值,此处为-99999999999999999999999999(即26个9);此时,数据库序列3的起始值小于所确定的第二属性信息中的取值范围值的最小值-9223372036854775808,说明起始值超出第二属性信息的取值范围,第一属性信息中的增量值为1,大于0,说明数据库序列3为升序序列,将第二属性信息中的取值范围值的最小值-9223372036854775808确定为第二属性信息中的起始值。
步骤四、将第一属性信息中的第三部分信息确定为第二属性信息中的第三部分信息。
经过本步骤的处理,第二属性信息如下表(处理过程中出现变化的属性值以斜体字表示):
与数据库序列3对应的第二属性信息
步骤五、按照PostgreSQL数据库创建序列的语法规则,根据第二属性信息,生成序列创建语句。
本步骤中生成DDL语句如下:
create sequence Seq3
start with-9223372036854775808
increment by 1
minvalue-9223372036854775808
maxvalue 9223372036854775807
cycle
cache 10
order
步骤六、在目标数据库中执行序列创建语句,得到与第二属性信息匹配的数据库序列。
本步骤中,在目标数据库执行步骤五中生成的DDL语句,完成将数据库序列3迁移到PostgreSQL数据库的过程。
图8是本申请的另一个实施例提供的一种电子设备的结构示意图。
如图8所示,本申请的另一个实施例提供的一种电子设备,包括:
处理器801,以及与所述处理器相连接的存储器802;
所述存储器802用于存储计算机程序;
所述处理器801用于调用并执行所述存储器中的所述计算机程序,以执行如以上任意实施例所述的数据库序列迁移的方法。
关于上述实施例中的设备,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是指至少两个。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (8)
1.一种数据库序列迁移的方法,其特征在于,包括:
获取源数据库中待迁移的数据库序列的属性信息,作为第一属性信息;
根据所述第一属性信息,确定与目标数据库匹配的第二属性信息;以及根据所述第二属性信息,在所述目标数据库中创建与所述第二属性信息匹配的数据库序列,作为迁移后的数据库序列;其中,所述第一属性信息和所述第二属性信息均包括:第一部分信息、第二部分信息和第三部分信息,所述根据所述第一属性信息,确定与目标数据库匹配的第二属性信息,包括:
根据所述第一属性信息和目标数据库所支持的数据库序列的特性,确定所述第二属性信息中的第一部分信息;
对所述第一属性信息中的第二部分信息进行匹配处理,将所述第一属性信息中匹配处理后的第二部分信息确定为所述第二属性信息中的第二部分信息;
将所述第一属性信息中的第三部分信息确定为第二属性信息中的第三部分信息;所述第一部分信息包括:数据类型;和/或,所述第二部分信息包括如下项中的至少一项:取值范围值、起始值、数据长度,所述取值范围值包括最大值和最小值;和/或,所述第三部分信息包括如下项中的至少一项:序列名、增量值、是否循环使用数据值、缓存序列值个数、是否按照请求的顺序生成值。
2.根据权利要求1所述的方法,其特征在于,在所述第一部分信息包括数据类型,且所述第二部分信息包括取值范围值时,所述根据所述第一属性信息和目标数据库所支持的数据库序列的特性,确定第二属性信息中的第一部分信息,包括:
根据第一属性信息中的取值范围值、目标数据库所支持的数据类型及其取值范围值,确定第二属性信息中的数据类型。
3.根据权利要求2所述的方法,其特征在于,所述目标数据库所支持的数据类型包括:支持明确指定的数据类型,或者,支持没有明确指定数据类型时所对应的隐式类型。
4.根据权利要求2所述的方法,其特征在于,所述根据第一属性信息中的取值范围值、目标数据库所支持的数据类型及其取值范围值,确定第二属性信息中的数据类型,包括:
计算所述第一属性信息中的取值范围值最大值和最小值的绝对值,将绝对值最大的数值作为第一最大值;
针对目标数据库所支持的数据类型,按照数据类型的取值范围从小到大的顺序,选择目标数据库所支持的一种数据类型作为当前数据类型,将当前数据类型的最大值作为第二最大值,并执行如下步骤:
如果所述第一最大值小于或等于所述第二最大值,则将所述当前数据类型确定为所述第二属性信息中的数据类型,并停止所述第二属性信息中的数据类型的选择过程;
如果所述第一最大值大于所述第二最大值,则重新选择当前数据类型直至找到合适的数据类型作为所述第二属性信息中的数据类型或者目标数据库所支持的数据类型全部被选择完毕,若选择完毕,则将选择过程中最后的当前数据类型作为所述第二属性信息中的数据类型。
5.根据权利要求1所述的方法,其特征在于,在所述第一部分信息包括数据类型,且所述第二部分信息包括取值范围值时,所述对所述第一属性信息中的第二部分信息进行匹配处理,包括:
如果所述第一属性信息取值范围值的最大值大于所确定的所述第二属性信息中的数据类型所支持的最大值,将所确定的所述第二属性信息中的数据类型所支持的最大值确定为所述第二属性信息取值范围值的最大值,否则,将所述第一属性信息取值范围值的最大值确定为所述第二属性信息取值范围值的最大值;和/或,
如果所述第一属性信息取值范围值的最小值小于所确定的所述第二属性信息中的数据类型所支持的最小值,将所确定的所述第二属性信息中的数据类型所支持的最小值确定为所述第二属性信息取值范围值的最小值,否则,将所述第一属性信息取值范围值的最小值确定为所述第二属性信息取值范围值的最小值。
6.根据权利要求1所述的方法,其特征在于,在所述第一部分信息包括数据类型,且所述第二部分信息包括起始值,且所述第三部分信息包括增量值时,所述对所述第一属性信息中的第二部分信息进行匹配处理,包括:
如果所述第一属性信息中的起始值大于或等于所确定的所述第二属性信息中的取值范围值的最小值,且,所述第一属性信息中的起始值小于或等于所确定的所述第二属性信息中的取值范围值的最大值,则将所述第一属性信息中的起始值确定为所述第二属性信息中的起始值;否则:
在所述第二属性信息中的增量值大于0时,将所确定的所述第二属性信息中的取值范围值的最小值确定为所述第二属性信息中的起始值;
在所述第二属性信息中的增量值小于0时,将所确定的第二属性信息中的取值范围值的最大值确定为所述第二属性信息中的起始值。
7.根据权利要求1所述的方法,其特征在于,所述根据所述第二属性信息,在所述目标数据库中创建与所述第二属性信息匹配的数据库序列,包括:
根据所述第二属性信息,生成序列创建语句;
在所述目标数据库中执行所述序列创建语句,得到与所述第二属性信息匹配的数据库序列。
8.一种电子设备,其特征在于,包括:
处理器,以及与所述处理器相连接的存储器;
所述存储器用于存储计算机程序;
所述处理器用于调用并执行所述存储器中的所述计算机程序,以执行如权利要求1-7任一项所述的数据库序列迁移的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811654191.8A CN111382140B (zh) | 2018-12-29 | 2018-12-29 | 数据库序列迁移的方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811654191.8A CN111382140B (zh) | 2018-12-29 | 2018-12-29 | 数据库序列迁移的方法及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111382140A CN111382140A (zh) | 2020-07-07 |
CN111382140B true CN111382140B (zh) | 2023-06-16 |
Family
ID=71218433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811654191.8A Active CN111382140B (zh) | 2018-12-29 | 2018-12-29 | 数据库序列迁移的方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111382140B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020268A (zh) * | 2012-12-26 | 2013-04-03 | 大唐软件技术股份有限公司 | 关系型数据库序列号应用方法和系统 |
CN103221949A (zh) * | 2010-07-27 | 2013-07-24 | 甲骨文国际公司 | Mysql数据库的异构的基于日志的复制 |
CN103440273A (zh) * | 2013-08-06 | 2013-12-11 | 北京航空航天大学 | 一种数据跨平台迁移方法及装置 |
CN105912665A (zh) * | 2016-04-12 | 2016-08-31 | 清华大学 | 一种Neo4j向关系型数据库的模型转换和数据迁移方法 |
CN108241618A (zh) * | 2016-12-23 | 2018-07-03 | 航天信息股份有限公司 | 数据库迁移的方法及装置、服务程序迁移的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10268633B2 (en) * | 2016-03-29 | 2019-04-23 | Wipro Limited | System and method for database migration with target platform scalability |
-
2018
- 2018-12-29 CN CN201811654191.8A patent/CN111382140B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103221949A (zh) * | 2010-07-27 | 2013-07-24 | 甲骨文国际公司 | Mysql数据库的异构的基于日志的复制 |
CN103020268A (zh) * | 2012-12-26 | 2013-04-03 | 大唐软件技术股份有限公司 | 关系型数据库序列号应用方法和系统 |
CN103440273A (zh) * | 2013-08-06 | 2013-12-11 | 北京航空航天大学 | 一种数据跨平台迁移方法及装置 |
CN105912665A (zh) * | 2016-04-12 | 2016-08-31 | 清华大学 | 一种Neo4j向关系型数据库的模型转换和数据迁移方法 |
CN108241618A (zh) * | 2016-12-23 | 2018-07-03 | 航天信息股份有限公司 | 数据库迁移的方法及装置、服务程序迁移的方法及装置 |
Non-Patent Citations (1)
Title |
---|
赵艳妮 等.《一种RDBMS到MongoDB数据迁移方法》.《现代计算机(专业版)》.2017,第18-23页. * |
Also Published As
Publication number | Publication date |
---|---|
CN111382140A (zh) | 2020-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10628449B2 (en) | Method and apparatus for processing database data in distributed database system | |
US9773041B2 (en) | Methods and apparatus of shared expression evaluation across RDBMS and storage layer | |
US8386532B2 (en) | Mechanism for co-located data placement in a parallel elastic database management system | |
US9507875B2 (en) | Symbolic hyper-graph database | |
US11113282B2 (en) | Online optimizer statistics maintenance during load | |
US9734223B2 (en) | Difference determination in a database environment | |
CN108153784B (zh) | 同步数据处理方法和装置 | |
JP6427592B2 (ja) | データ型に関連するデータプロファイリング操作の管理 | |
CN104965735A (zh) | 用于生成升级sql脚本的装置 | |
US8412670B2 (en) | Apparatus, method, and program for integrating information | |
CN108170815B (zh) | 一种数据处理方法、装置及存储介质 | |
CN110399368B (zh) | 一种定制数据表的方法、数据操作方法及装置 | |
CN107102995B (zh) | 一种sql执行计划的确定方法及装置 | |
CN105653716A (zh) | 一种基于分类-属性-值的数据库构造方法和构造系统 | |
US10776313B2 (en) | Converting source objects to target objects | |
US11188594B2 (en) | Wildcard searches using numeric string hash | |
US20190220363A1 (en) | Method, apparatus and computer program product for improving inline pattern detection | |
CN111382140B (zh) | 数据库序列迁移的方法及电子设备 | |
US11599540B2 (en) | Query execution apparatus, method, and system for processing data, query containing a composite primitive | |
CN106980673A (zh) | 内存数据库表索引更新方法及系统 | |
CN110955712A (zh) | 基于多数据源的开发api处理方法及装置 | |
CN115455057A (zh) | 数据库连接操作的执行方法、存储介质与计算机设备 | |
EP4377809A1 (en) | Chaining bloom filters to estimate the number of keys with low frequencies in a dataset | |
CN115250231B (zh) | 应用配置方法及装置 | |
US11966399B1 (en) | Processing top-K queries on data in relational database systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |