一种数据库的跨库结转方法及装置的制造方法

文档序号:9375811阅读:349来源:国知局
一种数据库的跨库结转方法及装置的制造方法
【技术领域】
[0001]本发明实施例涉及数据库技术,尤其涉及一种数据库的跨库结转方法及装置。
【背景技术】
[0002]随着数据库系统应用的不断增加和日益普及,多个数据库之间的数据转移变得越来越常见和重要。
[0003]目前,数据库之间的数据结转大致有三类方式法或技术,分别为采用数据导入导出工具,基于数据访问技术并采用SQL (Structured Query Language,结构化查询语言)编程实现数据结转,以及采用手工建库重新输入数据(待结转数据)的方式。
[0004]其中,第一种方式是可视化图形工具,有对话框且带向导,使用起来简单方便,但是针对数据量大,多种数据库协同导入导出,便出现了很多瓶颈和性能问题,例如,在待结转的数据量超过百万行时,利用该方式的数据结转速度很慢,时间过长甚至不能正常运行。第二种方式是利用数据访问技术(如开放数据库互连技术以及Java数据库连接技术等)分别访问数据库来连接源数据库和目标数据库,然后,读取用户选定的源数据库中待结转的数据表的架构信息,根据该架构信息在目标数据库中创建等价的数据表,最后,通过编写程序代码提取源数据表中的数据,再采用SQL语句将源数据表中的数据逐行地插入到目的数据库表。但是,在源数据表还存在与之相关联的从表时,这种方式便不再适用。第三种方式是在新系统中创建数据库,把原有系统的数据统一重新人工输入到新系统中,很显然该方式工作量大,效率低,同时出错率也很高。

【发明内容】

[0005]本发明提供一种数据库的跨库结转方法及装置,以实现大量数据、多种类型的数据表在多种数据库之间协同导入导出的目的,具有通用性强、以及执行效率高的优点。
[0006]第一方面,本发明实施例提供了一种数据库的跨库结转方法,包括:
[0007]根据预先创建的中间表从源数据库中获取待结转的源表的数据,其中,所述中间表的主键值与源表的主键值相同;
[0008]根据所述源表的数据记录数以及用户设置的单次结转的数据记录数确定结转线程的数量,将所述结转线程放入源表线程池,采用多线程并行处理的方式将所述源表的数据结转至目标数据库;
[0009]根据用户设置的源表与从表之间的关联字段,确定与所述源表关联的从表,根据所述从表的数量确定从表线程池的数量;
[0010]在所述从表的数量大于零时,根据所述关联字段从源数据库中获取与所述源表关联的从表的数据,根据各个从表的数据记录数以及用户设置的单次结转的数据记录数确定从表结转线程的数量,将所述从表结转线程放入从表线程池,采用多线程并行处理的方式将所述从表的数据结转至目标数据库。
[0011]第二方面,本发明实施例还提供了一种数据库的跨库结转装置,该跨库结转装置包括:
[0012]数据获取单元,用于根据预先创建的中间表从源数据库中获取待结转的源表的数据,其中,所述中间表的主键值与源表的主键值相同;
[0013]源表结转单元,用于根据所述源表的数据记录数以及用户设置的单次结转的数据记录数确定结转线程的数量,将所述结转线程放入源表线程池,采用多线程并行处理的方式将所述源表的数据结转至目标数据库;
[0014]从表确定单元,用于根据用户设置的源表与从表之间的关联字段,确定与所述源表关联的从表,根据所述从表的数量确定从表线程池的数量;
[0015]从表结转单元,用于在所述从表的数量大于零时,根据所述关联字段从源数据库中获取与所述源表关联的从表的数据,根据各个从表的数据记录数以及用户设置的单次结转的数据记录数确定从表结转线程的数量,将所述从表结转线程放入从表线程池,采用多线程并行处理的方式将所述从表的数据结转至目标数据库。
[0016]本发明通过预先创建的中间表从源数据库中获取待结转的源表的数据,根据源表的数据记录数与用户预先设置的结转规则确定结转线程,并根据用户预先设置的结转规则确定与源表关联的从表,再根据从表的数据记录数与用户预先设置的结转规则确定从表结转线程,分别通过结转线程以及从表结转线程将源数据库中的待结转数据结转到目标数据库。本发明解决现有的数据结转方式无法满足大量数据、多种类型的数据表在多种数据库之间协同导入导出要求的问题,实现根据用户自定义的结转规则在多种数据库之间进行数据结转,具有通用性强、以及执行效率高的优点。
【附图说明】
[0017]图1是本发明实施例一中的一种数据库的跨库结转方法的流程图;
[0018]图2a是本发明实施例二中的一种数据库的跨库结转方法的流程图;
[0019]图2b是本发明实施例二中的一种数据库的跨库结转方法的整体框架图;
[0020]图2c是本发明实施例二中的一种数据库的跨库结转方法的数据结转框图;
[0021]图3是本发明实施例三中的一种数据库的跨库结转装置的结构示意图。
【具体实施方式】
[0022]下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
[0023]实施例一
[0024]图1为本发明实施例一中提供的一种数据库的跨库结转方法的流程图,本实施例可适用于包含主表和从表的复杂数据表的数据库之间的数据迀移情况,该方法可以由跨库结转装置来执行,该装置被配置于服务器内,可通过硬件和/或软件的方式实现。该装置具体包括如下步骤:
[0025]步骤110、根据预先创建的中间表从源数据库中获取待结转的源表的数据。
[0026]其中,所述中间表为主键值与源表(主表)的主键值相同,且记录源表的数据的结转状态的数据表。例如,该中间表可以是包括与所述源表的主键值对应的源表的数据以及分别与所述源表的数据对应的结转状态的标识的数据表。由于所述中间表的主键值与源表的主键值相同,则根据所述主键值查找源数据库以获取待结转的源表的数据。源表是在数据库中建立的、包含主键的数据表格,其中,主键用于与从表相关联,并且作为源表中的唯一性标识。
[0027]根据预先创建的中间表从源数据库中获取待结转的源表的数据,可以是根据开始行号查询所述中间表的主键值对应的源表的数据的结转状态,以确定待结转的源表的数据,其中,所述开始行号为结转线程的数量与单次结转的数据记录数的乘积再加1,结转线程的数量的取值为自然数,单次结转的数据记录数根据用户的设置来确定,结转状态包括未结转的状态以及结转未成功的状态;根据所述待结转的源表的数据对应的主键值查询源数据库,以获取待结转的源表的数据,相应的,待结转的源表的数据包括未结转的数据以及结转未成功的数据。
[0028]步骤120、根据所述源表的数据记录数以及用户设置的单次结转的数据记录数确定结转线程的数量,将所述结转线程放入源表线程池,采用多线程并行处理的方式将所述源表的数据结转至目标数据库。
[0029]其中,结转线程为用于处理源表的数据的迀移的线程。结转源表的数据所需
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1