System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及数据库,尤其涉及一种文件并行装载入库的方法及装置。
技术介绍
1、随着信息时代的来临,数据出现爆炸式增长。银行在面对海量的业务数据时,对数据的装载效率和资源耗用提出了更高的要求。数据库运维人员在日常运维中遇到超大数据文件装载作业时,通常会监控到作业缓慢、资源不足等问题。
2、针对这类问题,目前通常是采用给服务器加cpu、内存、存储等硬件资源,做系统扩容的方式解决资源不足等问题,但是增加硬件资源往往需要停机进行维护,不仅耗费了更多的时间,而且只是单独的增加硬件资源,会导致数据etl过程中临时表统计信息失效,sql的执行计划并非最优,不会使etl的作业效率得到线性提升。而且如果超大数据文件不是常态化的话,直接扩容会导致资源在大部分时间利用率较低,增加了整个it预算成本。
技术实现思路
1、有鉴于此,本专利技术实施例提供一种文件并行装载入库的方法及装置,以解决数据etl装载过程中对超大文件作业运行时间过久、占用系统与数据库资源过多的问题。
2、为实现上述目的,本专利技术实施例提供如下技术方案:
3、本专利技术第一方面公开一种文件并行装载入库的方法,所述方法包括:
4、当接收到待装载文件时,获取所述待装载文件的数据量;
5、判断所述待装载文件的数据量是否大于阈值;
6、当所述待装载文件的数据量大于阈值时,根据预设规则对所述待装载文件进行分片处理,得到多个目标数据文件;
7、根据预设并行数量,将
8、优选的,所述根据预设规则对所述待装载文件进行分片处理,得到多个目标数据文件,包括:
9、从日志文件中获取预设个数的已装载文件的各个分片文件的目标数据量;
10、计算所有目标数据量的平均数据量;
11、根据所述平均数据量将所述待装载文件进行分片处理,得到多个目标数据文件;
12、或者,
13、获取预设分片数量;
14、根据所述预设分片数量将所述待装载文件进行分片处理,得到多个目标数据文件;
15、或者,
16、累计读取所述待装载文件中的记录,直至所述记录的数量等于预设记录数量;
17、基于所述预设记录数量的所述记录生成目标数据文件,返回执行所述累计读取所述待装载文件中的记录,直至所述记录的数量等于预设记录数量这一步骤,直至所述待装载文件中的记录全部读取完毕,得到多个目标数据文件。
18、优选的,所述根据预设并行数量,将所有目标数据文件并行装载到数据库,包括:
19、创建预设并行数量的并行进程;
20、对于每一个所述并行进程,将所述目标数据文件装载到数据库临时表;
21、根据所述数据库临时表对数据库目标表进行更新。
22、优选的,所述根据所述数据库临时表对数据库目标表进行更新,包括:
23、对于所述数据库临时表中的每一记录,查找数据库目标表中是否存储所述记录的记录标识;
24、若数据库目标表中未存储所述记录的记录标识,则将所述记录存储至所述数据库目标表,得到新的数据库目标表;
25、若数据库目标表中存储所述记录的记录标识,则获取所述数据库目标表中所述记录标识对应的目标记录;
26、比对所述目标记录和所述记录是否一致;
27、若不一致,则基于所述记录对所述目标记录进行修改,得到新的数据库目标表。
28、优选的,判断所述待装载文件的数据量是否大于阈值之后,还包括:
29、当所述待装载文件的数据量不大于阈值时,将所述待装载文件装载到所述数据库。
30、本专利技术第二方面公开了一种文件并行装载入库的装置,所述装置包括:
31、获取单元,用于当接收到待装载文件时,获取所述待装载文件的数据量;
32、判断单元,用于判断所述待装载文件的数据量是否大于阈值;
33、分片单元,用于当所述待装载文件的数据量大于阈值时,根据预设规则对所述待装载文件进行分片处理,得到多个目标数据文件;
34、第一装载单元,用于根据预设并行数量,将所有目标数据文件并行装载到数据库。
35、优选的,所述分片单元具体用于:
36、从日志文件中获取预设个数的已装载文件的各个分片文件的目标数据量;
37、计算所有目标数据量的平均数据量;
38、根据所述平均数据量将所述待装载文件进行分片处理,得到多个目标数据文件;
39、或者,
40、获取预设分片数量;
41、根据所述预设分片数量将所述待装载文件进行分片处理,得到多个目标数据文件;
42、或者,
43、累计读取所述待装载文件中的记录,直至所述记录的数量等于预设记录数量;
44、基于所述预设记录数量的所述记录生成目标数据文件,返回执行所述累计读取所述待装载文件中的记录,直至所述记录的数量等于预设记录数量这一步骤,直至所述待装载文件中的记录全部读取完毕,得到多个目标数据文件。
45、优选的,所述第一装载单元,包括:
46、创建模块,用于创建预设并行数量的并行进程;
47、装载模块,用于对于每一个所述并行进程,将所述目标数据文件装载到数据库临时表;
48、更新模块,用于根据所述数据库临时表对数据库目标表进行更新。
49、优选的,所述更新模块,包括:
50、查找子模块,用于对于所述数据库临时表中的每一记录,查找数据库目标表中是否存储所述记录的记录标识;
51、存储子模块,用于若数据库目标表中未存储所述记录的记录标识,则将所述记录存储至所述数据库目标表,得到新的数据库目标表;
52、获取子模块,用于若数据库目标表中存储所述记录的记录标识,则获取所述数据库目标表中所述记录标识对应的目标记录;
53、比对子模块,用于比对所述目标记录和所述记录是否一致;
54、修改子模块,用于若不一致,则基于所述记录对所述目标记录进行修改,得到新的数据库目标表。
55、优选的,所述装置还包括:
56、第二装载单元,用于当所述待装载文件的数据量不大于阈值时,将所述待装载文件装载到所述数据库。
57、基于上述本专利技术实施例提供的一种文件并行装载入库的方法及装置,包括:当接收到待装载文件时,获取待装载文件的数据量;判断待装载文件的数据量是否大于阈值;当待装载文件的数据量大于阈值时,根据预设规则对待装载文件进行分片处理,得到多个目标数据文件;根据预设并行数量,将所有目标数据文件并行装载到数据库。将单个数据量大于阈值的待装载文件进行有效拆分,充分利用系统并行处理能力进行并行装载处理,实现了大数据文件装载效率的大幅提升,解决了数据etl装载过程中对超大文件作业运行时间过久、本文档来自技高网...
【技术保护点】
1.一种文件并行装载入库的方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述根据预设规则对所述待装载文件进行分片处理,得到多个目标数据文件,包括:
3.根据权利要求1所述的方法,其特征在于,所述根据预设并行数量,将所有目标数据文件并行装载到数据库,包括:
4.根据权利要求3所述的方法,其特征在于,所述根据所述数据库临时表对数据库目标表进行更新,包括:
5.根据权利要求1所述的方法,其特征在于,判断所述待装载文件的数据量是否大于阈值之后,还包括:
6.一种文件并行装载入库的装置,其特征在于,所述装置包括:
7.根据权利要求6所述的装置,其特征在于,所述分片单元具体用于:
8.根据权利要求6所述的装置,其特征在于,所述第一装载单元,包括:
9.根据权利要求8所述的装置,其特征在于,所述更新模块,包括:
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:
【技术特征摘要】
1.一种文件并行装载入库的方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述根据预设规则对所述待装载文件进行分片处理,得到多个目标数据文件,包括:
3.根据权利要求1所述的方法,其特征在于,所述根据预设并行数量,将所有目标数据文件并行装载到数据库,包括:
4.根据权利要求3所述的方法,其特征在于,所述根据所述数据库临时表对数据库目标表进行更新,包括:
5.根据权利要求1所述...
【专利技术属性】
技术研发人员:夏映阳,
申请(专利权)人:中国建设银行股份有限公司广东省分行,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。