CN105389404A - 一种向数据库关联表导入数据的方法和装置 - Google Patents
一种向数据库关联表导入数据的方法和装置 Download PDFInfo
- Publication number
- CN105389404A CN105389404A CN201511016897.8A CN201511016897A CN105389404A CN 105389404 A CN105389404 A CN 105389404A CN 201511016897 A CN201511016897 A CN 201511016897A CN 105389404 A CN105389404 A CN 105389404A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- growth
- master
- association
- 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/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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
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)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开一种向数据库关联表导入数据的方法及装置,所述方法及装置通过对本次数据处理过程所需的关联表进行加锁,来禁止其他数据处理过程操作所述关联表,通过锁定关联表可实现在导入数据过程中,将关联表中自动增长的主键ID控制为一系列的可预期数值,从而在此基础上,可通过预先获取目标数据文件中各条关联数据对应的主键ID,实现将目标数据文件中的基本数据及扩展数据这些相关联的数据并行导入相应的关联表。从而,本申请实现了基本数据及扩展数据导入过程的并行执行,提升了向数据库关联表导入数据的速度。
Description
技术领域
本发明属于数据库管理和应用技术领域,尤其涉及一种向数据库关联表导入数据的方法和装置。
背景技术
随着互联网和信息技术的不断发展,及在此基础上大数据处理的广泛应用,各种应用系统在进行数据处理过程中可能会需要对接第三方系统数据,或者将第三方系统数据融合到本系统,从而在数据处理过程中可能会存在将各种有关联的数据导入到相应数据库关联表的需求,如以用户数据为例,具体需将数据文件中的用户基本信息、订单数据及相关参考信息,分别导入数据库的用户信息表、订单表及参考信息表这些关联表中。
在关联表中,订单表和用户参考信息表等这些扩展数据表(辅表)一般通过关联ID(identity,身份标识号码),如主键ID等,与作为基本数据表(主表)的用户信息表进行关联,其中,基本数据表的主键ID为自动增长字段,数据库会为每条添加至基本数据表的记录自动生成一主键ID。现有技术在向数据库关联表导入数据时,先向基本数据表导入基本数据,之后利用基本数据表提交后返回的主键ID,再向扩展数据表导入扩展数据并提交。
基于以上阐述可知,现有技术在向数据库关联表导入数据时,基本数据及扩展数据的数据导入过程无法并行执行,从而导致数据导入的速度非常缓慢。基于此,本领域亟需提供一种较优的关联表数据导入方案来改善这一情况,以提升向数据库关联表导入数据的速度。
发明内容
有鉴于此,本发明的目的在于提供一种向数据库关联表导入数据的方法和装置,旨在解决现有技术存在的上述问题,提升向数据库关联表导入数据的速度。
为此,本发明公开如下技术方案:
一种向数据库关联表导入数据的方法,所述关联表包括基本数据表及扩展数据表,所述方法包括:
锁定所述关联表,所述锁定用于禁止其他数据处理过程操作所述关联表;
基于所述关联表被锁定时的数据信息,获取目标数据文件中的各条关联数据对应的关联身份标识号码ID;其中,每条所述关联数据包括一条基本数据及一条或多条扩展数据;
基于所述各条关联数据对应的关联ID,将所述目标数据文件中的各条基本数据导入所述基本数据表,将所述目标数据文件中的各条扩展数据导入所述扩展数据表;其中,所述基本数据及所述扩展数据的导入过程并行执行。
上述方法,优选的,所述关联ID为主键ID,所述基于所述关联表被锁定时的数据信息,获取目标数据文件中的各条关联数据对应的关联ID,包括:
获取所述基本数据表中数值最大的主键ID,得到目标主键ID;
利用所述目标主键ID,分别计算所述目标数据文件中的各条关联数据对应的主键ID。
上述方法,优选的,所述基于所述各条关联数据对应的关联ID,将所述目标数据文件中的各条基本数据导入所述基本数据表,将所述目标数据文件中的各条扩展数据导入所述扩展数据表,包括:
为所述目标数据文件分配一块内存区域;
基于所述内存区域的可用空间大小,读取所述目标数据文件中的相应部分目标关联数据至所述内存区域,并在所述内存区域中独立缓存所述目标关联数据包括的目标基本数据及目标扩展数据;
基于预设的批量提交数据量上限及所述目标关联数据对应的各主键ID,将所述目标基本数据分批导入所述基本数据表,将所述目标扩展数据分批导入所述扩展数据表;其中,所述目标基本数据及所述目标扩展数据的导入过程并行执行。
上述方法,优选的,所述将所述目标基本数据分批导入所述基本数据表,将所述目标扩展数据分批导入至所述扩展数据表,包括:
为所述目标基本数据中的每条基本数据生成相应的第一结构化查询语言SQL插入语句,所述第一SQL插入语句用于实现将相应基本数据导入所述基本数据表;
为所述目标扩展数据中的每条扩展数据生成相应的第二SQL插入语句,所述第二SQL插入语句用于实现将相应扩展数据导入所述扩展数据表;
基于预设的批量提交数据量上限,将所述第一SQL插入语句及所述第二SQL插入语句并行分批提交至目标数据库;其中,所述目标数据库为所述关联表所在的数据库。
上述方法,优选的,还包括:
在将所述目标数据文件中的所有关联数据导入所述关联表之后,解锁所述关联表。
一种向数据库关联表导入数据的装置,所述关联表包括基本数据表及扩展数据表,所述装置包括:
加锁模块,用于锁定所述关联表,所述锁定用于禁止其他数据处理过程操作所述关联表;
获取模块,用于基于所述关联表被锁定时的数据信息,获取目标数据文件中的各条关联数据对应的关联ID;其中,每条所述关联数据包括一条基本数据及一条或多条扩展数据;
导入模块,用于基于所述各条关联数据对应的关联ID,将所述目标数据文件中的各条基本数据导入所述基本数据表,将所述目标数据文件中的各条扩展数据导入所述扩展数据表;其中,所述基本数据及所述扩展数据的导入过程并行执行。
上述装置,优选的,所述关联ID为主键ID,则所述获取模块包括:
获取单元,用于获取所述基本数据表中数值最大的主键ID,得到目标主键ID;
计算单元,用于利用所述目标主键ID,分别计算所述目标数据文件中的各条关联数据对应的主键ID。
上述装置,优选的,所述导入模块包括:
内存分配单元,用于为所述目标数据文件分配一块内存区域;
读取单元,用于基于所述内存区域的可用空间大小,读取所述目标数据文件中的相应部分目标关联数据至所述内存区域,并在所述内存区域中独立缓存所述目标关联数据包括的目标基本数据及目标扩展数据;
分批导入单元,用于基于预设的批量提交数据量上限及所述目标关联数据对应的各主键ID,将所述目标基本数据分批导入所述基本数据表,将所述目标扩展数据分批导入所述扩展数据表;其中,所述目标基本数据及所述目标扩展数据的导入过程并行执行。
上述装置,优选的,所述分批导入单元包括:
第一生成子单元,用于为所述目标基本数据中的每条基本数据生成相应的第一结构化查询语言SQL插入语句,所述第一SQL插入语句用于实现将相应基本数据导入所述基本数据表;
第二生成子单元,用于为所述目标扩展数据中的每条扩展数据生成相应的第二SQL插入语句,所述第二SQL插入语句用于实现将相应扩展数据导入所述扩展数据表;
分批提交子单元,用于基于预设的批量提交数据量上限,将所述第一SQL插入语句及所述第二SQL插入语句并行分批提交至目标数据库;其中,所述目标数据库为所述关联表所在的数据库。
上述装置,优选的,还包括:
解锁模块,用于在将所述目标数据文件中的所有关联数据导入所述关联表之后,解锁所述关联表。
由以上方案可知,本申请公开的向数据库关联表导入数据的方法及装置,通过对本次数据处理过程所需的关联表进行加锁,来禁止其他数据处理过程操作所述关联表,通过锁定关联表可实现在导入数据过程中,将关联表中自动增长的主键ID控制为一系列的可预期数值,从而在此基础上,可通过预先获取目标数据文件中各条关联数据对应的主键ID,实现将目标数据文件中的基本数据及扩展数据这些相关联的数据并行导入相应的关联表。从而,本申请实现了基本数据及扩展数据导入过程的并行执行,提升了向数据库关联表导入数据的速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本发明实施例一提供的向数据库关联表导入数据的方法流程图;
图2是本发明实施例一提供的读取文件数据及进行数据装桶的示意图;
图3是本发明实施例一提供的提交数据桶数据至数据库的示意图;
图4是本发明实施例一提供的向数据库导入文件数据的总处理过程示意图;
图5是本发明实施例二提供的向数据库关联表导入数据的方法流程图;
图6-图7是本发明实施例三提供的向数据库关联表导入数据的装置结构示意图。
具体实施方式
为了引用和清楚起见,下文中使用的技术名词、简写或缩写总结解释如下:
内存映射文件,是由一个文件到进程地址空间的映射,使用内存映射文件处理存储于磁盘上的文件时,将不必再对文件执行I/O操作,使得内存映射文件在处理大数据量的文件时能起到相当重要的作用。
批量提交,数据库可以一次性处理多条数据,比提交单条数据性能高。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例一公开一种向数据库关联表导入数据的方法,参考图1,所述方法可以包括以下步骤:
S101:锁定所述关联表,所述锁定用于禁止其他数据处理过程操作所述关联表。
其中,所述关联表为数据库中用于存放相关联数据的两个或多个数据表,一般来说,关联表包括一个用于存放基本数据的基本数据表(主表),以及一个或多个用于存放扩展数据的扩展数据表(辅表),所述基本数据表与所述扩展数据表通过关联ID如主键ID相关联。以用户数据为例,所述关联表可以是分别包含用户基本信息、用户订单数据及用户相关参考信息的用户信息表、订单表及参考信息表等,其中,所述用户信息表为基本数据表,所述订单表及所述参考信息表为扩展数据表,所述用户信息表通过用户ID与所述订单表及参考信息表关联,所述订单数据及所述用户相关参考信息统称为扩展数据。
本申请通过向数据库中本次数据处理所需的关联表进行加锁,使所述关联表在本次数据处理过程中不能被其他的数据处理过程(如其他的处理进程)所操作,以此实现在本次导入数据过程中,将关联表中自动增长的主键ID控制为一系列的可预期数值。从而在此基础上,可实现在向基本数据表导入数据之前,预先获取各条待导入数据的主键ID值,不必等待基本数据导入、提交后返回的主键ID,即可执行扩展数据的导入过程。
S102:基于所述关联表被锁定时的数据信息,获取目标数据文件中的各条关联数据对应的关联ID;其中,每条所述关联数据包括一条基本数据及一条或多条扩展数据。
在对关联表进行加锁锁定后,本步骤基于加锁后关联表中自动增长的主键ID的可预期特性,在向关联表的基本数据表导入数据之前,预先计算各条待导入数据(一般为记录形式)的主键ID。
其中,需首先获取基本数据表中当前数值最大的主键ID,并获知基本数据表主键ID自动增长时采用的递增数值,该数值一般为1,之后,可结合各条待导入数据记录的预期导入顺序,该顺序一般为各条数据记录在数据文件中的先后存放次序,预先计算出各条待导入数据记录的主键ID,例如,假设基本数据表中当前数值最大的主键ID为X,且所述递增数值为1,即每次向基本数据表中增加一条记录主键ID值加1,从而在向基本数据表导入数据之前,可基于各条待导入数据记录的预期导入次序,如各条记录在数据文件中的先后存放次序,预先计算出各条待导入数据记录的主键ID值为:X+1、X+2……X+n,其中,n为待导入数据记录的条数。
在每次将批量数据,如相关联的批量基本数据和批量扩展数据导入数据库关联表之前,本申请预先计算出所述批量数据所对应的批量主键ID,从而实现为后续基本数据和扩展数据的并行导入提供支持。
对于待导入目标数据文件的数据量较小的情况,可一次性批量导入,对于目标数据文件的数据量较大的情况,可基于数据库服务器的处理性能分批导入,并在导入每批数据之前,预先计算出当前批次数据的主键ID。
S103:基于所述各条关联数据对应的关联ID,将所述目标数据文件中的各条基本数据导入所述基本数据表,将所述目标数据文件中的各条扩展数据导入所述扩展数据表;其中,所述基本数据及所述扩展数据的导入过程并行执行。
在计算出各条待导入数据记录的主键ID的基础上,本步骤对并行导入基本数据和扩展数据至关联表的数据导入过程进行阐述。
由于内存映射处理技术在处理大数据文件时具有较大优势,本实施例基于内存映射处理技术(如内存映射文件),对目标数据文件进行数据读取及提交数据库处理。具体地,首先将目标数据文件中的关联数据,包括基本数据和扩展数据读取至服务器内存进行缓存,其中,如果所述目标数据文件较大,服务器内存或服务器性能不足以一次性批量处理整个数据文件的数据,则可以分批读取,每次读取文件中的部分数据到内存处理。
其中,如图2所示,读取目标数据文件中的关联数据至服务器内存后,分别将关联数据中的基本数据和扩展数据独立缓存,由于在目标数据文件中,基本数据和扩展数据可能融合存储在同一数据表中,例如,每一条数据记录中同时包含基本数据和扩展数据,也可能分别存储于不同的关联数据表中,因此,对于两者融合存储于同一数据表的情况,可在读取文件时,对其中的基本数据和扩展数据进行相应的数据拆分处理,将每条数据记录拆分为基本数据部分和扩展数据部分,以方便在内存中将两者独立缓存。其中,内存中每次缓存的各条基本数据及各条扩展数据具有一一对应的关联关系。
之后,参考图2,将内存中的数据按行处理(一行对应一条基本数据或一条或多条扩展数据),为每条基本数据生成相应的第一SQL(StructuredQueryLanguage,结构化查询语言)插入语句,为每条扩展数据生成相应的第二SQL插入语句,并将生成的SQL插入语句装载到一个个数据桶中,每个数据桶对应一个唯一序号,其中,每个数据桶可以装几千条甚至上万条SQL语句,数据桶的容量可以依据服务器性能进行调整,一般情况下,可将所述数据桶的容量预先设定为基于服务器性能所确定的批量提交数据量上限数值。每个数据桶包含两个子桶,分别用于装载基本数据SQL插入语句和扩展数据SQL插入语句,其中,每个数据桶中的两个子桶所装载的SQL语句具有一一对应关系(基于基本数据和扩展数据间的对应关系)。
其中,所述第一SQL插入语句用于实现将相应基本数据导入所述基本数据表;所述第二SQL插入语句用于实现将相应扩展数据导入所述扩展数据表;
在进行数据装桶过程中,同时将当前已装满数据的数据桶序号推送至序号队列,以通知提交数据线程该数据桶可以提交(提交至数据库)。所述序号队列负责维护一系列已满载可进行数据提交的数据桶序号,参考图3及图4,提交数据线程基于先进先出原则读取序号队列,并根据读取的序号定位至相应数据桶,将该数据桶中的两个子桶数据并行提交至数据库,实现批量提交缓存数据,数据库接收到提交的数据桶数据后,执行其中的基本数据SQL插入语句及扩展数据SQL插入语句,实现基本数据与扩展数据的并行导入。在提交完数据桶数据后,从序号队列中删除该桶序号,并读取下一个序号,处理下一个数据桶数据,直至目标数据文件中所有关联数据提交完毕。
具体实施本申请时,可基于实际的数据处理速度要求,并结合服务器性能,确定在数据导入过程中的其他环节内是否需要采用多线程并行处理,例如,并行处理大数据文件,将多个内存数据并行装桶等。同时,对于大数据文件来说,由于需分批导入数据,从而基于提高数据处理速度这一考虑,大数据文件导入过程的不同处理环节均可进行并行处理,例如并行执行读取文件、数据装通以及数据提交等各环节的操作。
由以上方案可知,本申请公开的向数据库关联表导入数据的方法,通过对本次数据处理过程所需的关联表进行加锁,来禁止其他数据处理过程操作所述关联表,通过锁定关联表可实现在导入数据过程中,将关联表中自动增长的主键ID控制为一系列的可预期数值,从而在此基础上,可通过预先获取目标数据文件中各条关联数据对应的主键ID,实现将目标数据文件中的基本数据及扩展数据这些相关联的数据并行导入相应的关联表。从而,本申请实现了基本数据及扩展数据导入过程的并行执行,提升了向数据库关联表导入数据的速度。
实施例二
本实施例二继续对实施例一的方案进行补充,参考图5,所述向数据库关联表导入数据的方法还可以包括以下步骤:
S104:在将所述目标数据文件中的所有关联数据导入所述关联表之后,解锁所述关联表。
具体地,当将目标数据文件中的所有关联数据导入关联表后,本次数据导入过程结束,从而需对关联表进行解锁,以使其他数据处理过程可以操作所述关联表。
实施例三
本实施例公开一种向数据库关联表导入数据的装置,所述装置与以上各实施例公开的向数据库关联表导入数据的方法相对应。
相应于实施例一,参考图6,所述装置可以包括加锁模块100、获取模块200和导入模块300。
加锁模块100,用于锁定所述关联表,所述锁定用于禁止其他数据处理过程操作所述关联表。
获取模块200,用于基于所述关联表被锁定时的数据信息,获取目标数据文件中的各条关联数据对应的关联ID;其中,每条所述关联数据包括一条基本数据及一条或多条扩展数据。
其中,所述关联ID为主键ID,则所述获取模块200包括获取单元和计算单元。
获取单元,用于获取所述基本数据表中数值最大的主键ID,得到目标主键ID;
计算单元,用于利用所述目标主键ID,分别计算所述目标数据文件中的各条关联数据对应的主键ID。
导入模块300,用于基于所述各条关联数据对应的关联ID,将所述目标数据文件中的各条基本数据导入所述基本数据表,将所述目标数据文件中的各条扩展数据导入所述扩展数据表;其中,所述基本数据及所述扩展数据的导入过程并行执行。
所述导入模块300包括内存分配单元、读取单元和分批导入单元。
内存分配单元,用于为所述目标数据文件分配一块内存区域;
读取单元,用于基于所述内存区域的可用空间大小,读取所述目标数据文件中的相应部分目标关联数据至所述内存区域,并在所述内存区域中独立缓存所述目标关联数据包括的目标基本数据及目标扩展数据;
分批导入单元,用于基于预设的批量提交数据量上限及所述目标关联数据对应的各主键ID,将所述目标基本数据分批导入所述基本数据表,将所述目标扩展数据分批导入所述扩展数据表;其中,所述目标基本数据及所述目标扩展数据的导入过程并行执行。
所述分批导入单元包括第一生成子单元、第二生成子单元和分批提交子单元。
第一生成子单元,用于为所述目标基本数据中的每条基本数据生成相应的第一结构化查询语言SQL插入语句,所述第一SQL插入语句用于实现将相应基本数据导入所述基本数据表;
第二生成子单元,用于为所述目标扩展数据中的每条扩展数据生成相应的第二SQL插入语句,所述第二SQL插入语句用于实现将相应扩展数据导入所述扩展数据表;
分批提交子单元,用于基于预设的批量提交数据量上限,将所述第一SQL插入语句及所述第二SQL插入语句并行分批提交至目标数据库;其中,所述目标数据库为所述关联表所在的数据库。
相应于实施例二,参考图7,所述装置还可以包括解锁模块400,用于在将所述目标数据文件中的所有关联数据导入所述关联表之后,解锁所述关联表。
对于本发明实施例三公开的向数据库关联表导入数据的装置而言,由于其与实施例一至实施例二公开的向数据库关联表导入数据的方法相对应,所以描述的比较简单,相关相似之处请参见实施例一至实施例二中向数据库关联表导入数据的方法部分的说明即可,此处不再详述。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
为了描述的方便,描述以上系统或装置时以功能分为各种模块或单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
最后,还需要说明的是,在本文中,诸如第一、第二、第三和第四等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种向数据库关联表导入数据的方法,其特征在于,所述关联表包括基本数据表及扩展数据表,所述方法包括:
锁定所述关联表,所述锁定用于禁止其他数据处理过程操作所述关联表;
基于所述关联表被锁定时的数据信息,获取目标数据文件中的各条关联数据对应的关联身份标识号码ID;其中,每条所述关联数据包括一条基本数据及一条或多条扩展数据;
基于所述各条关联数据对应的关联ID,将所述目标数据文件中的各条基本数据导入所述基本数据表,将所述目标数据文件中的各条扩展数据导入所述扩展数据表;其中,所述基本数据及所述扩展数据的导入过程并行执行。
2.根据权利要求1所述的方法,其特征在于,所述关联ID为主键ID,所述基于所述关联表被锁定时的数据信息,获取目标数据文件中的各条关联数据对应的关联ID,包括:
获取所述基本数据表中数值最大的主键ID,得到目标主键ID;
利用所述目标主键ID,分别计算所述目标数据文件中的各条关联数据对应的主键ID。
3.根据权利要求2所述的方法,其特征在于,所述基于所述各条关联数据对应的关联ID,将所述目标数据文件中的各条基本数据导入所述基本数据表,将所述目标数据文件中的各条扩展数据导入所述扩展数据表,包括:
为所述目标数据文件分配一块内存区域;
基于所述内存区域的可用空间大小,读取所述目标数据文件中的相应部分目标关联数据至所述内存区域,并在所述内存区域中独立缓存所述目标关联数据包括的目标基本数据及目标扩展数据;
基于预设的批量提交数据量上限及所述目标关联数据对应的各主键ID,将所述目标基本数据分批导入所述基本数据表,将所述目标扩展数据分批导入所述扩展数据表;其中,所述目标基本数据及所述目标扩展数据的导入过程并行执行。
4.根据权利要求3所述的方法,其特征在于,所述将所述目标基本数据分批导入所述基本数据表,将所述目标扩展数据分批导入至所述扩展数据表,包括:
为所述目标基本数据中的每条基本数据生成相应的第一结构化查询语言SQL插入语句,所述第一SQL插入语句用于实现将相应基本数据导入所述基本数据表;
为所述目标扩展数据中的每条扩展数据生成相应的第二SQL插入语句,所述第二SQL插入语句用于实现将相应扩展数据导入所述扩展数据表;
基于预设的批量提交数据量上限,将所述第一SQL插入语句及所述第二SQL插入语句并行分批提交至目标数据库;其中,所述目标数据库为所述关联表所在的数据库。
5.根据权利要求1-4任意一项所述的方法,其特征在于,还包括:
在将所述目标数据文件中的所有关联数据导入所述关联表之后,解锁所述关联表。
6.一种向数据库关联表导入数据的装置,其特征在于,所述关联表包括基本数据表及扩展数据表,所述装置包括:
加锁模块,用于锁定所述关联表,所述锁定用于禁止其他数据处理过程操作所述关联表;
获取模块,用于基于所述关联表被锁定时的数据信息,获取目标数据文件中的各条关联数据对应的关联ID;其中,每条所述关联数据包括一条基本数据及一条或多条扩展数据;
导入模块,用于基于所述各条关联数据对应的关联ID,将所述目标数据文件中的各条基本数据导入所述基本数据表,将所述目标数据文件中的各条扩展数据导入所述扩展数据表;其中,所述基本数据及所述扩展数据的导入过程并行执行。
7.根据权利要求6所述的装置,其特征在于,所述关联ID为主键ID,则所述获取模块包括:
获取单元,用于获取所述基本数据表中数值最大的主键ID,得到目标主键ID;
计算单元,用于利用所述目标主键ID,分别计算所述目标数据文件中的各条关联数据对应的主键ID。
8.根据权利要求7所述的装置,其特征在于,所述导入模块包括:
内存分配单元,用于为所述目标数据文件分配一块内存区域;
读取单元,用于基于所述内存区域的可用空间大小,读取所述目标数据文件中的相应部分目标关联数据至所述内存区域,并在所述内存区域中独立缓存所述目标关联数据包括的目标基本数据及目标扩展数据;
分批导入单元,用于基于预设的批量提交数据量上限及所述目标关联数据对应的各主键ID,将所述目标基本数据分批导入所述基本数据表,将所述目标扩展数据分批导入所述扩展数据表;其中,所述目标基本数据及所述目标扩展数据的导入过程并行执行。
9.根据权利要求8所述的装置,其特征在于,所述分批导入单元包括:
第一生成子单元,用于为所述目标基本数据中的每条基本数据生成相应的第一结构化查询语言SQL插入语句,所述第一SQL插入语句用于实现将相应基本数据导入所述基本数据表;
第二生成子单元,用于为所述目标扩展数据中的每条扩展数据生成相应的第二SQL插入语句,所述第二SQL插入语句用于实现将相应扩展数据导入所述扩展数据表;
分批提交子单元,用于基于预设的批量提交数据量上限,将所述第一SQL插入语句及所述第二SQL插入语句并行分批提交至目标数据库;其中,所述目标数据库为所述关联表所在的数据库。
10.根据权利要求6-9任意一项所述的装置,其特征在于,还包括:
解锁模块,用于在将所述目标数据文件中的所有关联数据导入所述关联表之后,解锁所述关联表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511016897.8A CN105389404B (zh) | 2015-12-29 | 2015-12-29 | 一种向数据库关联表导入数据的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511016897.8A CN105389404B (zh) | 2015-12-29 | 2015-12-29 | 一种向数据库关联表导入数据的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105389404A true CN105389404A (zh) | 2016-03-09 |
CN105389404B CN105389404B (zh) | 2019-04-16 |
Family
ID=55421694
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511016897.8A Active CN105389404B (zh) | 2015-12-29 | 2015-12-29 | 一种向数据库关联表导入数据的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105389404B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104991972A (zh) * | 2015-07-28 | 2015-10-21 | 上海联影医疗科技有限公司 | 扫描协议数据的存储、读取方法及存储装置 |
CN107291574A (zh) * | 2016-03-30 | 2017-10-24 | 中国石油化工股份有限公司 | 基于解释系统的备份数据恢复主键生成方法 |
CN107577787A (zh) * | 2017-09-15 | 2018-01-12 | 广东万丈金数信息技术股份有限公司 | 关联数据信息入库的方法及系统 |
CN107665195A (zh) * | 2016-07-27 | 2018-02-06 | 北京京东尚科信息技术有限公司 | 导入大数量数据的方法、装置及系统 |
CN110851083A (zh) * | 2018-11-09 | 2020-02-28 | 珠海奔彩打印科技有限公司 | 一种内容可嵌套打印方法及打印系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040243576A1 (en) * | 1998-12-07 | 2004-12-02 | Oracle International Corporation | System and method for querying data for implicit hierarchies |
CN102063500A (zh) * | 2011-01-04 | 2011-05-18 | 北京凯铭风尚网络技术有限公司 | 一种数据迁移的方法及装置 |
CN103559272A (zh) * | 2013-11-05 | 2014-02-05 | 北京国双科技有限公司 | 向维度表里导入数据的方法和装置 |
CN105095425A (zh) * | 2015-07-17 | 2015-11-25 | 北京京东尚科信息技术有限公司 | 一种数据库的跨库结转方法及装置 |
-
2015
- 2015-12-29 CN CN201511016897.8A patent/CN105389404B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040243576A1 (en) * | 1998-12-07 | 2004-12-02 | Oracle International Corporation | System and method for querying data for implicit hierarchies |
CN102063500A (zh) * | 2011-01-04 | 2011-05-18 | 北京凯铭风尚网络技术有限公司 | 一种数据迁移的方法及装置 |
CN103559272A (zh) * | 2013-11-05 | 2014-02-05 | 北京国双科技有限公司 | 向维度表里导入数据的方法和装置 |
CN105095425A (zh) * | 2015-07-17 | 2015-11-25 | 北京京东尚科信息技术有限公司 | 一种数据库的跨库结转方法及装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104991972A (zh) * | 2015-07-28 | 2015-10-21 | 上海联影医疗科技有限公司 | 扫描协议数据的存储、读取方法及存储装置 |
CN107291574A (zh) * | 2016-03-30 | 2017-10-24 | 中国石油化工股份有限公司 | 基于解释系统的备份数据恢复主键生成方法 |
CN107291574B (zh) * | 2016-03-30 | 2020-08-25 | 中国石油化工股份有限公司 | 基于解释系统的备份数据恢复主键生成方法 |
CN107665195A (zh) * | 2016-07-27 | 2018-02-06 | 北京京东尚科信息技术有限公司 | 导入大数量数据的方法、装置及系统 |
CN107577787A (zh) * | 2017-09-15 | 2018-01-12 | 广东万丈金数信息技术股份有限公司 | 关联数据信息入库的方法及系统 |
CN110851083A (zh) * | 2018-11-09 | 2020-02-28 | 珠海奔彩打印科技有限公司 | 一种内容可嵌套打印方法及打印系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105389404B (zh) | 2019-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105389404A (zh) | 一种向数据库关联表导入数据的方法和装置 | |
CN103530327B (zh) | 一种从非关系型数据库到关系型数据库的数据迁移方法 | |
CN102725753B (zh) | 优化数据访问的方法及装置、优化数据存储的方法及装置 | |
CN102999526B (zh) | 一种数据库关系表的拆分、查询方法及系统 | |
CN104361018B (zh) | 电子档案信息整编方法及装置 | |
CN104021219B (zh) | 一种数据模板的生成方法及装置 | |
CN104112008A (zh) | 一种多表数据关联查询优化方法和装置 | |
CN106611064B (zh) | 分布式关系数据库的数据处理方法和装置 | |
CN104112011B (zh) | 一种海量数据提取的方法及装置 | |
CN103246549B (zh) | 一种数据转存的方法及系统 | |
US20180189337A1 (en) | Method and system for storing time series data in a relational database | |
CN108876330B (zh) | 多时区日切方法和装置 | |
CN109716321B (zh) | N路散列连接 | |
CN107977396A (zh) | 一种KeyValue数据库的数据表的更新方法与表数据更新装置 | |
CN107807932A (zh) | 一种基于路径枚举的层级数据管理方法和系统 | |
CN102609490A (zh) | 一种面向列存储dwms的b+树索引方法 | |
CN102867066A (zh) | 数据汇总装置和数据汇总方法 | |
CN106407191A (zh) | 一种数据处理方法及服务器 | |
CN102521304A (zh) | 基于哈希的聚簇表存储方法 | |
CN104715076A (zh) | 一种多线程数据处理方法及装置 | |
CN103559272A (zh) | 向维度表里导入数据的方法和装置 | |
CN103365740A (zh) | 一种数据冷备方法及装置 | |
CN106383897A (zh) | 数据库容量计算方法和装置 | |
CN104572666A (zh) | 一种基于Jxl批量解析Excel并导入数据库的方法 | |
CN107657050A (zh) | 一种基于“用归并算法计算一对一join、一对多join”的对位分段并行方法 |
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 |