CN105095425A - 一种数据库的跨库结转方法及装置 - Google Patents
一种数据库的跨库结转方法及装置 Download PDFInfo
- Publication number
- CN105095425A CN105095425A CN201510423767.XA CN201510423767A CN105095425A CN 105095425 A CN105095425 A CN 105095425A CN 201510423767 A CN201510423767 A CN 201510423767A CN 105095425 A CN105095425 A CN 105095425A
- Authority
- CN
- China
- Prior art keywords
- data
- source
- carrying
- database
- thread
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库的跨库结转方法及装置。所述方法包括:根据预先创建的中间表从源数据库中获取待结转的源表的数据;根据源表的数据记录数以及用户设置的单次结转的数据记录数确定结转线程的数量,将结转线程放入源表线程池,采用多线程并行处理的方式将源表的数据结转至目标数据库;根据用户设置的源表与从表之间的关联字段,确定与源表关联的从表,根据从表的数量确定从表线程池的数量;在从表的数量大于零时,根据各个从表的数据记录数以及用户设置的单次结转的数据记录数确定从表结转线程的数量,将所述从表结转线程放入从表线程池,采用多线程并行处理的方式将从表的数据结转至目标数据库,实现多种类型的数据表在多种数据库间结转。
Description
技术领域
本发明实施例涉及数据库技术,尤其涉及一种数据库的跨库结转方法及装置。
背景技术
随着数据库系统应用的不断增加和日益普及,多个数据库之间的数据转移变得越来越常见和重要。
目前,数据库之间的数据结转大致有三类方式法或技术,分别为采用数据导入导出工具,基于数据访问技术并采用SQL(StructuredQueryLanguage,结构化查询语言)编程实现数据结转,以及采用手工建库重新输入数据(待结转数据)的方式。
其中,第一种方式是可视化图形工具,有对话框且带向导,使用起来简单方便,但是针对数据量大,多种数据库协同导入导出,便出现了很多瓶颈和性能问题,例如,在待结转的数据量超过百万行时,利用该方式的数据结转速度很慢,时间过长甚至不能正常运行。第二种方式是利用数据访问技术(如开放数据库互连技术以及Java数据库连接技术等)分别访问数据库来连接源数据库和目标数据库,然后,读取用户选定的源数据库中待结转的数据表的架构信息,根据该架构信息在目标数据库中创建等价的数据表,最后,通过编写程序代码提取源数据表中的数据,再采用SQL语句将源数据表中的数据逐行地插入到目的数据库表。但是,在源数据表还存在与之相关联的从表时,这种方式便不再适用。第三种方式是在新系统中创建数据库,把原有系统的数据统一重新人工输入到新系统中,很显然该方式工作量大,效率低,同时出错率也很高。
发明内容
本发明提供一种数据库的跨库结转方法及装置,以实现大量数据、多种类型的数据表在多种数据库之间协同导入导出的目的,具有通用性强、以及执行效率高的优点。
第一方面,本发明实施例提供了一种数据库的跨库结转方法,包括:
根据预先创建的中间表从源数据库中获取待结转的源表的数据,其中,所述中间表的主键值与源表的主键值相同;
根据所述源表的数据记录数以及用户设置的单次结转的数据记录数确定结转线程的数量,将所述结转线程放入源表线程池,采用多线程并行处理的方式将所述源表的数据结转至目标数据库;
根据用户设置的源表与从表之间的关联字段,确定与所述源表关联的从表,根据所述从表的数量确定从表线程池的数量;
在所述从表的数量大于零时,根据所述关联字段从源数据库中获取与所述源表关联的从表的数据,根据各个从表的数据记录数以及用户设置的单次结转的数据记录数确定从表结转线程的数量,将所述从表结转线程放入从表线程池,采用多线程并行处理的方式将所述从表的数据结转至目标数据库。
第二方面,本发明实施例还提供了一种数据库的跨库结转装置,该跨库结转装置包括:
数据获取单元,用于根据预先创建的中间表从源数据库中获取待结转的源表的数据,其中,所述中间表的主键值与源表的主键值相同;
源表结转单元,用于根据所述源表的数据记录数以及用户设置的单次结转的数据记录数确定结转线程的数量,将所述结转线程放入源表线程池,采用多线程并行处理的方式将所述源表的数据结转至目标数据库;
从表确定单元,用于根据用户设置的源表与从表之间的关联字段,确定与所述源表关联的从表,根据所述从表的数量确定从表线程池的数量;
从表结转单元,用于在所述从表的数量大于零时,根据所述关联字段从源数据库中获取与所述源表关联的从表的数据,根据各个从表的数据记录数以及用户设置的单次结转的数据记录数确定从表结转线程的数量,将所述从表结转线程放入从表线程池,采用多线程并行处理的方式将所述从表的数据结转至目标数据库。
本发明通过预先创建的中间表从源数据库中获取待结转的源表的数据,根据源表的数据记录数与用户预先设置的结转规则确定结转线程,并根据用户预先设置的结转规则确定与源表关联的从表,再根据从表的数据记录数与用户预先设置的结转规则确定从表结转线程,分别通过结转线程以及从表结转线程将源数据库中的待结转数据结转到目标数据库。本发明解决现有的数据结转方式无法满足大量数据、多种类型的数据表在多种数据库之间协同导入导出要求的问题,实现根据用户自定义的结转规则在多种数据库之间进行数据结转,具有通用性强、以及执行效率高的优点。
附图说明
图1是本发明实施例一中的一种数据库的跨库结转方法的流程图;
图2a是本发明实施例二中的一种数据库的跨库结转方法的流程图;
图2b是本发明实施例二中的一种数据库的跨库结转方法的整体框架图;
图2c是本发明实施例二中的一种数据库的跨库结转方法的数据结转框图;
图3是本发明实施例三中的一种数据库的跨库结转装置的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一中提供的一种数据库的跨库结转方法的流程图,本实施例可适用于包含主表和从表的复杂数据表的数据库之间的数据迁移情况,该方法可以由跨库结转装置来执行,该装置被配置于服务器内,可通过硬件和/或软件的方式实现。该装置具体包括如下步骤:
步骤110、根据预先创建的中间表从源数据库中获取待结转的源表的数据。
其中,所述中间表为主键值与源表(主表)的主键值相同,且记录源表的数据的结转状态的数据表。例如,该中间表可以是包括与所述源表的主键值对应的源表的数据以及分别与所述源表的数据对应的结转状态的标识的数据表。由于所述中间表的主键值与源表的主键值相同,则根据所述主键值查找源数据库以获取待结转的源表的数据。源表是在数据库中建立的、包含主键的数据表格,其中,主键用于与从表相关联,并且作为源表中的唯一性标识。
根据预先创建的中间表从源数据库中获取待结转的源表的数据,可以是根据开始行号查询所述中间表的主键值对应的源表的数据的结转状态,以确定待结转的源表的数据,其中,所述开始行号为结转线程的数量与单次结转的数据记录数的乘积再加1,结转线程的数量的取值为自然数,单次结转的数据记录数根据用户的设置来确定,结转状态包括未结转的状态以及结转未成功的状态;根据所述待结转的源表的数据对应的主键值查询源数据库,以获取待结转的源表的数据,相应的,待结转的源表的数据包括未结转的数据以及结转未成功的数据。
步骤120、根据所述源表的数据记录数以及用户设置的单次结转的数据记录数确定结转线程的数量,将所述结转线程放入源表线程池,采用多线程并行处理的方式将所述源表的数据结转至目标数据库。
其中,结转线程为用于处理源表的数据的迁移的线程。结转源表的数据所需的结转线程的数量可以由用户设定,用户可以通过多种方式确定源表的数据的结转线程的数量,所述结转线程的数量需要与结转任务的执行周期相匹配,以确保在执行周期内结转完成所有的源表的数据以及从表的数据。例如,可以通过所获得的待结转的源表的数据确定待结转的源表的数据记录数(数据片段数),再根据用户预先设置的单次结转的数据记录数,可以确定结转所述待结转的源表的数据所需的结转线程的数量。
为了提高数据结转的效率,采用多线程并行处理的方式将待结转的源表的数据结转至目标数据库。采用的方式可以是,创建多个结转线程,所创建的结转线程的数量为采用待结转的源表的数据记录数和用户预先设置的单次结转的数据记录数确定的结转线程的数量,将所创建的结转线程放入源表线程池,通过所创建的结转线程并行且各自独立的处理待结转的源表的数据,将所述待结转的源表的数据迁移至所述目标数据库。修改结转成功的源表在中间表中对应的结转状态,对于未结转成功的源表,其在中间表中对应的结转状态不改变。
步骤130、根据用户设置的源表与从表之间的关联字段,确定与所述源表关联的从表,根据所述从表的数量确定从表线程池的数量。
其中,所述关联字段为所述源表包含的主键。所述从表是以所述源表包含的主键值为外键的数据表格,从表可以通过外键与源表进行关联查询。例如,可以根据用户预先设置的源表的主键,查询源数据库,以确定与所述源表关联的从表。创建从表线程池以处理从表的数据的结转,其中,从表线程池的数量与所述从表的数量相等。
步骤140、在所述从表的数量大于零时,根据所述关联字段从源数据库中获取与所述源表关联的从表的数据,根据各个从表的数据记录数以及用户设置的单次结转的数据记录数确定从表结转线程的数量,将所述从表结转线程放入从表线程池,采用多线程并行处理的方式将所述从表的数据结转至目标数据库。
在当前结转成功的源表对应的从表的数量大于零时,根据所述关联字段从源数据库中获取与所述源表关联的从表的数据。顺序获取与所述源表关联的从表中的一个作为当前从表。根据当前从表的数据记录数以及用户设置的单次结转的数据记录数确定当前从表的从表结转线程的数量,将所述当前从表的从表结转线程放入当前从表对应的从表线程池,采用多线程并行处理的方式将当前从表的数据从源数据库结转至目标数据库。在完成当前从表的数据的结转后,以当前从表的下一个从表作为当前从表,重复执行上述结转流程,直至将与当前结转完成的源表对应的从表的数据全部结转至目标数据库。
本实施例的技术方案,通过预先创建的中间表从源数据库中获取待结转的源表的数据,并根据用户预先设置的结转规则确定与源表关联的从表,再分别针对源表和从表创建线程,以采用先结转源表后结转从表的方式将源数据库中的待结转数据结转到目标数据库,解决了现有的数据结转方式无法满足大量数据、多种类型的数据表在多种数据库之间协同导入导出要求的问题,实现根据用户自定义的结转规则在多种数据库之间进行数据结转,达到了具有较高通用性、以及较高执行效率的效果。
在上述技术方案的基础上,在根据预先创建的中间表从源数据库中获取待结转的源表的数据之前,优选还可以包括:根据用户设置的结转任务的执行周期,在所述执行周期开始时,将所述中间表包含的结转状态的标识复位为未结转状态的取值。这样设置的好处在于在每次执行结转任务之前,将中间表复位,以确定源数据库中待结转的数据,确保将所述待结转的数据全部结转至目标数据库,避免数据的遗漏。
在上述技术方案的基础上,在采用多线程并行处理的方式将所述源表的数据结转至目标数据库之后,优选还可以包括:在所述源表的数据成功结转至目标数据库时,将所述中间表内对应的结转状态的标识更新为已经结转且结转成功的状态的取值。这样设置的好处在于区分结转成功的源表与未结转成功的源表,以便于在执行周期内再次结转未结转成功的源表,保证数据的完整性,避免数据的遗漏。
实施例二
图2a是本发明实施例二中的一种数据库的跨库结转方法的流程图。该跨库结转方法具体包括如下步骤:
步骤201、加载配置参数。
参见图2b所示,用户通过数据结转平台设置配置参数,所述配置参数包括结转配置,执行配置,以及数据源配置。其中,数据结转平台是基于C/S(Client/ServerStructs,客户端和服务器结构)架构的web(互联网)应用系统。
结转配置可以是在数据结转平台中添加需要结转数据的结转任务和结转任务对应的结转条件,例如单表结转、还是多表结转、源数据库地址、目的数据库地址、结转数据的提取语句(SQL)、结转的主键等信息。单表结转(单任务结转),将源数据库中的一张数据表里的数据结转到目标数据库对应的数据表中。多表结转(多任务结转),将源数据库中的源表以及与源表对应的多个从表进行统一结转操作,统一结转到目标数据库对应的数据表中。例如,在多表结转时,根据需求先结转源表的数据,后结转从表的数据。以订单为例,可以配置结转条件,结转条件包含的结转数据的提取语句可以是SQL语句。将订单作为源表,订单对应的从数据(从表)可能会很多,比如订单优惠数据、订单对应的财务数据、订单对应的配送数据等等,需要先结转订单的数据,再结转订单所对应的从数据。
执行配置可以是在结转平台中配置各个结转任务的执行周期,在结转过程中,有一些数据是要求在某个时间点之后才结转的,因为目前这些数据还在生产使用阶段,或者为了避免同一台服务器中的不同数据库同时结转带来的超负荷运转的风险,采用设置执行周期的方式,以实现分流结转,保障服务器的平稳运行。
数据源配置可以是在结转平台中配置源数据库和目标数据库的归属数据库类型、端口、用户以及密码等信息。所有信息都采用加密方式存储,确保数据的安全性。
上述配置参数可以存储于服务器的内存缓存中,这样设计的好处在于提高处理配置参数的速度,节约数据结转所需的时间。由于获取待结转的数据需要访问数据库,将待结转的数据结转至目标数据库也需要访问数据库,如果读写配置信息还需要访问数据库,那么,需要多次连接数据库,多次查询数据库并进行读写操作,所需处理时间无形中被延长,可能导致数据结转效率降低。
在将上述配置参数存储于服务器的内存缓存中时,若需要配置参数,只需访问服务器的内存缓存,即可获取配置参数,读取位于内存缓存中的数据所需的时间较短。
步骤202、判断是否存在未结转成功的数据,若是,则执行步骤204,若否,则执行步骤203。
根据用户预先设置的中间表判断是否存在未结转成功的数据。所述中间表的主键值与源表的主键值相同,该中间表还包括记录源表的数据的结转状态的标识,比如,upflag=0表示数据没有结转过,upflag=1表示数据已经结转过,delflag=0表示数据未结转成功,delflag=1表示数据结转成功。采用upflag与delflag两个标识结合以表示数据的结转状态。若某一主键值对应的upflag=0且delflag=0,表示该主键值对应的源表的数据没有结转过。若某一主键值对应的upflag=1且delflag=0,表示该主键值对应的源表的数据未结转成功。若某一主键值对应的upflag=1且delflag=1,表示该主键值对应的源表的数据结转成功。
步骤203、在下一个执行周期开始时,初始化中间表。
在下一个执行周期开始时,首先初始化中间表,将upflag和delflag的取值都置为0,表示源表的数据没有结转过。
步骤204、根据中间表获取源表的数据中未结转的数据。
由于中间表的主键值与源表的主键值相同,则根据中间表中delflag=0对应的主键值查找源数据库,以获取源表的数据中未结转的数据记录数。
步骤205、计算结转线程数。
参见图2c所示,根据上述步骤中获取的未结转的数据记录数(即为count)以及用户预先设置的单次结转的数据记录数(unit),可以确定未结转的源表的数据所需的结转线程的数量(记为Nm,Nm=count/unit)。
步骤206、将结转线程放入线程池,以执行源表的数据的结转线程。
根据上述步骤确定的结转线程的数量Nm创建结转线程,将所创建的结转线程放入源表线程池,通过所创建的结转线程并行且各自独立的处理未结转的源表的数据,将所述未结转的源表的数据迁移至所述目标数据库。
步骤207、根据开始行号分页查询中间表的主键值。
开始行号可以根据结转线程的数量(记为count),以及单次结转的数据记录数(记为unit)确定,具体为:开始行号N=count*unit+1,其中,count的取值为自然数,unit的值是根据用户的设置确定。比如,用户设置单次结转40条数据记录,根据用户设置的单次结转的数据记录数确定中间表的一页,此时,中间表中一页包含的数据记录为40条,该页的开始行号为1(count=0),第二页的开始行号为41(count=1),依次类推,可以确定各页的开始行号。以开始行号为一页的查询起点,分页查询中间表的各页的主键值。
步骤208、判断是否存在待结转的数据,若是,则执行步骤209,若否,则结转任务结束。
查询中间表,确定在中间表中是否存在delflag=0的结转状态,若存在,则说明存在待结转的数据。
步骤209、根据中间表的主键值查询源表的数据。
根据与上述步骤中delflag=0的结转状态对应的主键值,根据所述主键值查询源数据库,以获得源表的数据。
步骤210、根据源表的数据生成目标数据库的插入指令,以将源表的数据批量插入目标数据库。
采用SQL语句,根据源表的数据(包含多个数据片段)生成insert指令,将源表的数据批量插入目标数据库,在向目标数据库插入数据的同时,在目标数据库中创建存储所插入数据的历史表。
步骤211、更新中间表内与源表的数据对应的结转状态的标识。
在数据结转成功后,更新中间表内结转成功的数据的主键值对应的upflag与delflag的取值,使upflag=1且delflag=1。若数据结转失败,则使结转失败的数据的主键值对应的upflag=1且delflag=0,以在结转任务的执行周期内进行重新结转。对于结转失败的数据,若连续结转3次仍未结转成功,则结转任务结束,提示结转失败的消息。
步骤212、判断是否存在与源表关联的从表,若是,则执行步骤213,若否,则结转任务结束。
根据用户预先设置的源表的主键,查询源数据库,以确定与所述源表关联的从表。若存在从表,则执行步骤213,若不存在从表,则结转任务结束。
步骤213、执行从表结转线程。
参见图2c所示,顺序获取与所述源表关联的从表中的一个作为当前从表。将当前从表的数据记录数记为count1,根据用户设置的单次结转的数据记录数unit以及count1确定当前从表的从表结转线程的数量Ns1,Ns1=count1/unit。将所述当前从表的从表结转线程放入当前从表对应的从表线程池(从表线程池的数量=从表个数),采用多线程并行处理的方式将当前从表的数据从源数据库结转至目标数据库。
根据主键值(为从表的外键值)查询源数据库,获取从表的数据(包含多个数据片段)。采用SQL语句,根据从表的数据生成insert指令,将从表的数据批量插入目标数据库且与所述目标数据库中的历史表相关联。
本实施例的技术方案,通过中间表确定需要结转的数据,采用多线程并行处理的方式,先结转源表的数据后结转从表的数据,最终将源数据库中需要结转的数据结转到目标数据库,保证了数据的完整性和结转任务整体的运行效率。
实施例三
图3是本发明实施例三中的一种数据库的跨库结转装置的结构示意图。所述跨库结转装置,包括:
数据获取单元310,用于根据预先创建的中间表从源数据库中获取待结转的源表的数据,其中,所述中间表的主键值与源表的主键值相同;
源表结转单元320,用于根据所述源表的数据记录数以及用户设置的单次结转的数据记录数确定结转线程的数量,将所述结转线程放入源表线程池,采用多线程并行处理的方式将所述源表的数据结转至目标数据库;
从表确定单元330,用于根据用户设置的源表与从表之间的关联字段,确定与所述源表关联的从表,根据所述从表的数量确定从表线程池的数量;
从表结转单元340,用于在所述从表的数量大于零时,根据所述关联字段从源数据库中获取与所述源表关联的从表的数据,根据各个从表的数据记录数以及用户设置的单次结转的数据记录数确定从表结转线程的数量,将所述从表结转线程放入从表线程池,采用多线程并行处理的方式将所述从表的数据结转至目标数据库。
本实施例的技术方案,通过数据获取单元310预先创建的中间表从源数据库中获取待结转的源表的数据,并根据源表结转单元320确定结转线程的数量并创建相应数量的结转线程放入源表线程池,通过从表确定单元330确定与所述源表关联的从表,并创建与所述从表的数量相应的从表线程池,根据从表结转单元340确定从表结转线程的数量,并创建相应数量的从表结转线程放入从表线程池,采用多线程并行处理的方式,先结转源表的数据后结转从表的数据,将源数据库中的待结转数据结转到目标数据库,解决了现有的数据结转方式无法满足大量数据、多种类型的数据表在多种数据库之间协同导入导出要求的问题,实现根据用户自定义的结转规则在多种数据库之间进行数据结转,达到了具有较高通用性、以及较高执行效率的效果。
进一步地,所述预先创建的中间表至少包括:
与所述源表的主键值对应的源表的数据以及分别与所述源表的数据对应的结转状态的标识。
进一步地,所述装置还包括:
中间表复位单元,用于根据预先创建的中间表从源数据库中获取待结转的源表的数据之前,根据用户设置的结转任务的执行周期,在所述执行周期开始时,将所述中间表包含的结转状态的标识复位为未结转状态的取值。
进一步地,所述数据获取单元310包括:
数据确定子单元,用于根据开始行号查询所述中间表的主键值对应的源表的数据的结转状态,以确定待结转的源表的数据,其中,所述开始行号为结转线程的数量与单次结转的数据记录数的乘积再加1,结转线程的数量的取值为自然数;
数据获取子单元,用于根据所述待结转的源表的数据对应的主键值查询源数据库,以获取待结转的源表的数据。
进一步地,所述装置还包括:
标识更新单元,用于在采用多线程并行处理的方式将所述源表的数据结转至目标数据库之后,在所述源表的数据成功结转至目标数据库时,将所述中间表内对应的结转状态的标识更新为已经结转且结转成功的状态的取值。
上述数据库的跨库结转装置可执行本发明任意实施例所提供的数据库的跨库结转方法,具备执行方法相应的功能模块和有益效果。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种数据库的跨库结转方法,其特征在于,包括:
根据预先创建的中间表从源数据库中获取待结转的源表的数据,其中,所述中间表的主键值与源表的主键值相同;
根据所述源表的数据记录数以及用户设置的单次结转的数据记录数确定结转线程的数量,将所述结转线程放入源表线程池,采用多线程并行处理的方式将所述源表的数据结转至目标数据库;
根据用户设置的源表与从表之间的关联字段,确定与所述源表关联的从表,根据所述从表的数量确定从表线程池的数量;
在所述从表的数量大于零时,根据所述关联字段从源数据库中获取与所述源表关联的从表的数据,根据各个从表的数据记录数以及用户设置的单次结转的数据记录数确定从表结转线程的数量,将所述从表结转线程放入从表线程池,采用多线程并行处理的方式将所述从表的数据结转至目标数据库。
2.根据权利要求1所述的方法,其特征在于,所述预先创建的中间表至少包括:
与所述源表的主键值对应的源表的数据以及分别与所述源表的数据对应的结转状态的标识。
3.根据权利要求2所述的方法,其特征在于,根据预先创建的中间表从源数据库中获取待结转的源表的数据之前,还包括:
根据用户设置的结转任务的执行周期,在所述执行周期开始时,将所述中间表包含的结转状态的标识复位为未结转状态的取值。
4.根据权利要求1至3中任一所述的方法,其特征在于,根据预先创建的中间表从源数据库中获取待结转的源表的数据,包括:
根据开始行号查询所述中间表的主键值对应的源表的数据的结转状态,以确定待结转的源表的数据,其中,所述开始行号为结转线程的数量与单次结转的数据记录数的乘积再加1,结转线程的数量的取值为自然数;
根据所述待结转的源表的数据对应的主键值查询源数据库,以获取待结转的源表的数据。
5.根据权利要求1所述的方法,其特征在于,采用多线程并行处理的方式将所述源表的数据结转至目标数据库之后,还包括:
在所述源表的数据成功结转至目标数据库时,将所述中间表内对应的结转状态的标识更新为已经结转且结转成功的状态的取值。
6.一种数据库的跨库结转装置,其特征在于,包括:
数据获取单元,用于根据预先创建的中间表从源数据库中获取待结转的源表的数据,其中,所述中间表的主键值与源表的主键值相同;
源表结转单元,用于根据所述源表的数据记录数以及用户设置的单次结转的数据记录数确定结转线程的数量,将所述结转线程放入源表线程池,采用多线程并行处理的方式将所述源表的数据结转至目标数据库;
从表确定单元,用于根据用户设置的源表与从表之间的关联字段,确定与所述源表关联的从表,根据所述从表的数量确定从表线程池的数量;
从表结转单元,用于在所述从表的数量大于零时,根据所述关联字段从源数据库中获取与所述源表关联的从表的数据,根据各个从表的数据记录数以及用户设置的单次结转的数据记录数确定从表结转线程的数量,将所述从表结转线程放入从表线程池,采用多线程并行处理的方式将所述从表的数据结转至目标数据库。
7.根据权利要求6所述的装置,其特征在于,所述预先创建的中间表至少包括:
与所述源表的主键值对应的源表的数据以及分别与所述源表的数据对应的结转状态的标识。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
中间表复位单元,用于根据预先创建的中间表从源数据库中获取待结转的源表的数据之前,根据用户设置的结转任务的执行周期,在所述执行周期开始时,将所述中间表包含的结转状态的标识复位为未结转状态的取值。
9.根据权利要求6至8中任一所述的装置,其特征在于,所述数据获取单元包括:
数据确定子单元,用于根据开始行号查询所述中间表的主键值对应的源表的数据的结转状态,以确定待结转的源表的数据,其中,所述开始行号为结转线程的数量与单次结转的数据记录数的乘积再加1,结转线程的数量的取值为自然数;
数据获取子单元,用于根据所述待结转的源表的数据对应的主键值查询源数据库,以获取待结转的源表的数据。
10.根据权利要求6所述的装置,其特征在于,所述装置还包括:
标识更新单元,用于在采用多线程并行处理的方式将所述源表的数据结转至目标数据库之后,在所述源表的数据成功结转至目标数据库时,将所述中间表内对应的结转状态的标识更新为已经结转且结转成功的状态的取值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510423767.XA CN105095425B (zh) | 2015-07-17 | 2015-07-17 | 一种数据库的跨库结转方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510423767.XA CN105095425B (zh) | 2015-07-17 | 2015-07-17 | 一种数据库的跨库结转方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105095425A true CN105095425A (zh) | 2015-11-25 |
CN105095425B CN105095425B (zh) | 2018-07-24 |
Family
ID=54575862
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510423767.XA Active CN105095425B (zh) | 2015-07-17 | 2015-07-17 | 一种数据库的跨库结转方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105095425B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105389404A (zh) * | 2015-12-29 | 2016-03-09 | 北京斗牛科技有限公司 | 一种向数据库关联表导入数据的方法和装置 |
CN105740462A (zh) * | 2016-03-02 | 2016-07-06 | 上海新炬网络信息技术有限公司 | 一种支持不同环境之间的数据迁移方法 |
CN105930389A (zh) * | 2016-04-14 | 2016-09-07 | 北京京东尚科信息技术有限公司 | 数据结转的方法和系统 |
CN106446172A (zh) * | 2016-09-27 | 2017-02-22 | 浪潮软件集团有限公司 | 一种用于大数据比对的数据转储方法 |
CN107562538A (zh) * | 2017-08-22 | 2018-01-09 | 中国铁道科学研究院电子计算技术研究所 | 铁路运输统计中的数据抽取多任务管理方法和系统 |
CN112181937A (zh) * | 2019-07-04 | 2021-01-05 | 北京京东振世信息技术有限公司 | 一种结转数据的方法和装置 |
US20210248162A1 (en) * | 2020-02-12 | 2021-08-12 | Roblox Corporation | Parallel data transfer from one database to another database |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100288140B1 (ko) * | 1998-12-07 | 2001-05-02 | 이계철 | 이기종 데이터베이스 관리 시스템에 접근 가능한 연결 제공 시스템 및 그 방법 |
CN102831211A (zh) * | 2012-08-14 | 2012-12-19 | 中山大学 | 一种基于表关联分析的数据表迁移的方法 |
CN103605571A (zh) * | 2013-11-20 | 2014-02-26 | 国家电网公司 | 数据库连接池的控制方法 |
-
2015
- 2015-07-17 CN CN201510423767.XA patent/CN105095425B/zh active Active
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105389404A (zh) * | 2015-12-29 | 2016-03-09 | 北京斗牛科技有限公司 | 一种向数据库关联表导入数据的方法和装置 |
CN105389404B (zh) * | 2015-12-29 | 2019-04-16 | 北京斗牛科技有限公司 | 一种向数据库关联表导入数据的方法和装置 |
CN105740462A (zh) * | 2016-03-02 | 2016-07-06 | 上海新炬网络信息技术有限公司 | 一种支持不同环境之间的数据迁移方法 |
CN105930389A (zh) * | 2016-04-14 | 2016-09-07 | 北京京东尚科信息技术有限公司 | 数据结转的方法和系统 |
CN106446172A (zh) * | 2016-09-27 | 2017-02-22 | 浪潮软件集团有限公司 | 一种用于大数据比对的数据转储方法 |
CN107562538A (zh) * | 2017-08-22 | 2018-01-09 | 中国铁道科学研究院电子计算技术研究所 | 铁路运输统计中的数据抽取多任务管理方法和系统 |
CN107562538B (zh) * | 2017-08-22 | 2020-01-07 | 中国铁道科学研究院电子计算技术研究所 | 铁路运输统计中的数据抽取多任务管理方法和系统 |
CN112181937A (zh) * | 2019-07-04 | 2021-01-05 | 北京京东振世信息技术有限公司 | 一种结转数据的方法和装置 |
CN112181937B (zh) * | 2019-07-04 | 2023-11-03 | 北京京东振世信息技术有限公司 | 一种结转数据的方法和装置 |
US20210248162A1 (en) * | 2020-02-12 | 2021-08-12 | Roblox Corporation | Parallel data transfer from one database to another database |
Also Published As
Publication number | Publication date |
---|---|
CN105095425B (zh) | 2018-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105095425A (zh) | 一种数据库的跨库结转方法及装置 | |
CN105786808B (zh) | 一种用于分布式执行关系型计算指令的方法与设备 | |
US8601474B2 (en) | Resuming execution of an execution plan in a virtual machine | |
US20200210399A1 (en) | Signature-based cache optimization for data preparation | |
CN111324577B (zh) | 一种Yml文件读写的方法及装置 | |
US20180081938A1 (en) | System and method for querying data sources | |
US20200272610A1 (en) | Method, apparatus, device and medium for storing and querying data | |
US20150278268A1 (en) | Data encoding and corresponding data structure | |
CN111046034A (zh) | 管理内存数据及在内存中维护数据的方法和系统 | |
US20140046928A1 (en) | Query plans with parameter markers in place of object identifiers | |
US9569485B2 (en) | Optimizing database query | |
US9218394B2 (en) | Reading rows from memory prior to reading rows from secondary storage | |
JP6982049B2 (ja) | インデックスを管理するための方法、装置、設備及び記憶媒体 | |
CN105989015B (zh) | 一种数据库扩容方法和装置以及访问数据库的方法和装置 | |
US9323798B2 (en) | Storing a key value to a deleted row based on key range density | |
US11681691B2 (en) | Presenting updated data using persisting views | |
CN106339408A (zh) | 数据同步方法、数据同步装置和服务器 | |
EP3362808B1 (en) | Cache optimization for data preparation | |
CN110020272B (zh) | 缓存方法、装置以及计算机存储介质 | |
US10678789B2 (en) | Batch data query method and apparatus | |
CN104461929B (zh) | 基于拦截器的分布式数据缓存方法 | |
US20140052710A1 (en) | Device and method of mass data storage based on tree structure | |
US9569519B2 (en) | Client-side directed commands to a loosely coupled database | |
CN108595488B (zh) | 数据迁移方法和装置 | |
CN112000671A (zh) | 基于区块链的数据库表处理方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |