一种数据迁移方法和装置制造方法及图纸

技术编号:27935242 阅读:16 留言:0更新日期:2021-04-02 14:15
本发明专利技术公开了数据迁移方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括获取待迁移数据,确定所述待迁移数据导入的目标表,以创建与所述目标表结构一致的临时表;调用预设的分割模型,将所述待迁移数据分成多个数据文件,进而导入所述数据文件至所述临时表;其中,每导入一个数据文件至临时表之后,为所述临时表建立与所述目标表一致的所述数据文件的索引信息;基于预设的交换模型,将所述临时表中的数据文件交换至所述的目标表。从而,本发明专利技术的实施方式能够解决大数据量表在高并发访问时的数据更新问题,保证数据安全快速更新的同时业务不会中断。

【技术实现步骤摘要】
一种数据迁移方法和装置
本专利技术涉及计算机
,尤其涉及一种数据迁移方法和装置。
技术介绍
Oracle(甲骨文公司)的SqlLoader(简称为sqlldr)工具可以将数据文件导入到Oracle数据库中,即将数据文件导入Oracle数据库通过Oracle自带的sqlldr,其中编写sqlldr的ctl文件可以对使用sqlldr时的参数进行修改。在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:如果想要快速导入数据到数据库中,需要将sqlldr的direct参数设置为true,但这样会在导数过程中使数据库的索引失效,尤其是数据量巨大时,索引失效是十分危险的,并且之后对于大数据量的表重建索引也存在巨大风险。且在此过程中,该表的访问也会有问题。如果将direct参数设置为false,可以在索引不失效的情况下将数据安全导入,但导数速度大大降低,性能非常糟糕。
技术实现思路
有鉴于此,本专利技术实施例提供一种数据迁移方法和装置,能够解决现有向带有索引的表导入大量数据所产生的安全问题与性能问题。同时保证业务不会中断。为实现上述目的,根据本专利技术实施例的一个方面,提供了一种数据迁移方法,包括获取待迁移数据,确定所述待迁移数据导入的目标表,以创建与所述目标表结构一致的临时表;调用预设的分割模型,将所述待迁移数据分成多个数据文件,进而导入所述数据文件至所述临时表;其中,每导入一个数据文件至临时表之后,为所述临时表建立与所述目标表一致的所述数据文件的索引信息;基于预设的交换模型,将所述临时表中的数据文件交换至所述的目标表。可选地,基于预设的分割模型将所述待迁移数据分成多个数据文件,包括:确定待迁移数据对应的业务类型,以获取所述业务类型的分区字段,进而根据所述分区字段将所述待迁移数据分成多个数据文件。可选地,根据所述分区字段将所述待迁移数据分成多个数据文件之后,还包括:判断数据文件的数据量是否大于预设的数量阈值,若是则将所述数据文件切分成若干个子数据文件,若否则不予处理。可选地,导入所述数据文件至所述临时表,包括:通过sqlldr多线程方法,将所述数据文件导入所述的临时表;其中,将sqlldr的ctl文件中direct参数和parallel参数设置为true。可选地,通过sqlldr多线程方法,将所述数据文件导入所述的临时表,包括:多个线程同一时间导入同一数据文件;如果存在没有数据文件导入的线程,则将所述线程状态设置为等待。可选地,基于预设的交换模型,将所述临时表中的数据文件交换至所述目标表,包括:待一个数据文件导入完成,所述临时表与所述目标表进行分区交换,交换分区的同时交换索引。可选地,将所述临时表中的数据文件交换至所述的目标表之后,包括:删除所述临时表中的索引信息。另外,本专利技术还提供了一种数据迁移装置,包括获取模块,用于获取待迁移数据,确定所述待迁移数据导入的目标表,以创建与所述目标表结构一致的临时表;处理模块,用于调用预设的分割模型,将所述待迁移数据分成多个数据文件,进而导入所述数据文件至所述临时表;其中,每导入一个数据文件至临时表之后,为所述临时表建立与所述目标表一致的所述数据文件的索引信息;基于预设的交换模型,将所述临时表中的数据文件交换至所述的目标表。上述专利技术中的一个实施例具有如下优点或有益效果:本专利技术能够使用临时表进行分区交换,从而避免索引失效问题;并且,在高吞吐量的实时交易系统中,实现业务不中断,快速完成大数据表的批量数据更新;同时,本专利技术在保持direct参数为true的情况下进行导数,并且不会引发索引失效问题,且开启多线程并行导入,使导入速度更快。上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。附图说明附图用于更好地理解本专利技术,不构成对本专利技术的不当限定。其中:图1是根据本专利技术第一实施例的数据迁移方法的主要流程的示意图;图2是根据本专利技术第二实施例的数据迁移方法的架构的示意图;图3是根据本专利技术实施例的数据迁移装置的主要模块的示意图;图4是本专利技术实施例可以应用于其中的示例性系统架构图;图5是适于用来实现本专利技术实施例的终端设备或服务器的计算机系统的结构示意图。具体实施方式以下结合附图对本专利技术的示范性实施例做出说明,其中包括本专利技术实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本专利技术的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。图1是根据本专利技术第一实施例的数据迁移方法的主要流程的示意图,如图1所示,所述数据迁移方法包括:步骤S101,获取待迁移数据,确定所述待迁移数据导入的目标表,以创建与所述目标表结构一致的临时表。在实施例中,要将待迁移数据从数据源层迁移到目标层,即目标表,其中创建与所述目标表结构完全一致的临时表作为中转站,最后通过分区交换技术将数据迁移到目标层。步骤S102,调用预设的分割模型,将所述待迁移数据分成多个数据文件,进而导入所述数据文件至所述临时表;其中,每导入一个数据文件至临时表之后,为所述临时表建立与所述目标表一致的所述数据文件的索引信息。在一些实施例中,基于预设的分割模型将所述待迁移数据分成多个数据文件,包括确定待迁移数据对应的业务类型,以获取所述业务类型的分区字段,进而根据所述分区字段将所述待迁移数据分成多个数据文件。例如:对于银行完整的还款现金流计划业务类型,可以按照分行字段将数据按照分行进行分区。进一步地实施例,根据所述分区字段将所述待迁移数据分成多个数据文件之后,还可以判断数据文件的数据量是否大于预设的数量阈值,若是则将所述数据文件切分成若干个子数据文件,若否则不予处理。例如:分区字段X共有3个值,那应分出3个数据文件,t、m、n、3个数据文件的字段X的属性值不同,若数据文件的数据量大于预设的数量阈值即可能文件太大,则继续切分,得到t1、t2、t3、t4、m1、m2、n1、n2、n3,每个文件包含50万至500万条数据即可,当然还要参考总体数据量。作为另一些实施例,导入所述数据文件至所述临时表,包括:通过sqlldr多线程方法,将所述数据文件导入所述的临时表;其中,将sqlldr的ctl文件中direct参数和parallel参数设置为true,从而能够提高导数性能。需要说明的是,sqlldr是ORACLE的数据加载工具。Ctl为sqlldr的控制文件。其中,Direct参数是直接将数据灌入表中,在此过程中,如果表有索引,则索引会失效。Parallel参数为开启并行,且只有在direct参数开启的情况下才能开启。direct参数和parallel参数都会加快导数速度。进一步地实施例,通过sqlldr多线程方法,将所述数据文件导入所述的临时表,包括:多个线程同一本文档来自技高网...

【技术保护点】
1.一种数据迁移方法,其特征在于,包括:/n获取待迁移数据,确定所述待迁移数据导入的目标表,以创建与所述目标表结构一致的临时表;/n调用预设的分割模型,将所述待迁移数据分成多个数据文件,进而导入所述数据文件至所述临时表;其中,每导入一个数据文件至临时表之后,为所述临时表建立与所述目标表一致的所述数据文件的索引信息;/n基于预设的交换模型,将所述临时表中的数据文件交换至所述的目标表。/n

【技术特征摘要】
1.一种数据迁移方法,其特征在于,包括:
获取待迁移数据,确定所述待迁移数据导入的目标表,以创建与所述目标表结构一致的临时表;
调用预设的分割模型,将所述待迁移数据分成多个数据文件,进而导入所述数据文件至所述临时表;其中,每导入一个数据文件至临时表之后,为所述临时表建立与所述目标表一致的所述数据文件的索引信息;
基于预设的交换模型,将所述临时表中的数据文件交换至所述的目标表。


2.根据权利要求1所述的方法,其特征在于,基于预设的分割模型将所述待迁移数据分成多个数据文件,包括:
确定待迁移数据对应的业务类型,以获取所述业务类型的分区字段,进而根据所述分区字段将所述待迁移数据分成多个数据文件。


3.根据权利要求2所述的方法,其特征在于,根据所述分区字段将所述待迁移数据分成多个数据文件之后,还包括:
判断数据文件的数据量是否大于预设的数量阈值,若是则将所述数据文件切分成若干个子数据文件,若否则不予处理。


4.根据权利要求1所述的方法,其特征在于,导入所述数据文件至所述临时表,包括:
通过sqlldr多线程方法,将所述数据文件导入所述的临时表;其中,将sqlldr的ctl文件中direct参数和parallel参数设置为true。


5.根据权利要求4所述的方法,其特征在于,通过sqlldr多线程方法,将所述数据文件导入所述的临时表,包括:
多个线程同一时间导入...

【专利技术属性】
技术研发人员:张向旭张玉龙张逸
申请(专利权)人:中国建设银行股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1