CN103077241A - 将文件拆分后并行加载数据入库的方法 - Google Patents
将文件拆分后并行加载数据入库的方法 Download PDFInfo
- Publication number
- CN103077241A CN103077241A CN2013100099968A CN201310009996A CN103077241A CN 103077241 A CN103077241 A CN 103077241A CN 2013100099968 A CN2013100099968 A CN 2013100099968A CN 201310009996 A CN201310009996 A CN 201310009996A CN 103077241 A CN103077241 A CN 103077241A
- Authority
- CN
- China
- Prior art keywords
- file
- files
- loaded
- data
- data loading
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种将文件拆分后并行加载数据入库的方法,使用SQL Loader将数据加载入库,包括以下步骤:读取控制文件和数据文件,生成日志文件、坏文件和废弃文件;配置SQL Loader的参数;根据配置参数,判断需要加载的文件的记录数是否大于参数配置的记录限额值;根据参数配置的子文件记录数值将需要加载的文件顺序拆分为n个子文件;启动数据装载工具SQL Loader的m个子进程对子文件进行并行加载,每个子进程对多个子文件进行串行加载。本发明的将文件拆分后并行加载数据入库的方法,在SQL Loader工具基础上,更进一步优化海量数据加载入库的性能。
Description
技术领域
本发明涉及金融行业领域中面对大数据量的数据加载入库的性能解决方案,尤其涉及一种将文件拆分后并行加载数据入库的方法。
背景技术
随着信息技术的迅猛发展,银行业务领域越来越需要解决大数据量的数据加载入库所带来的性能优化问题。这些业务实时产生的数据量非常大,如果在应用程序中采用SQL语句插入方式装载数据,将会耗费大量的时间,且不能保证数据的实时性和系统的稳定性。因此,在开发具有海量数据的业务系统时,常常采用数据装载工具来进行海量数据的装载。SQL Loader是Oracle提供的将文件中的数据装载到数据库中的有效工具。对于SQL Loader数据装载方案的改进是业界广泛关注的问题,其直接影响到海量数据加载入库的性能最优化。现有技术中,虽然SQL Loader的技术应用方兴未艾,但是限于海量数据本身的数据量大、信息量大、实时产生等特性,单纯的SQL Loader加载数据不可避免的效率偏低。因此,无论是从数据加载过程,还是从数据源的处理,都需要加以改进,才能突破瓶颈。
发明内容
本发明所要解决的技术问题是,在SQL Loader工具基础上,更进一步优化海量数据加载入库的性能。
为了解决上述技术问题,本发明提供了一种将文件拆分后并行加载数据入库的方法,使用Oracle提供的数据装载工具SQL Loader将大数据量的文件中的数据加载入库,包括以下步骤:
S1:读取控制文件和数据文件,生成日志文件、坏文件和废弃文件;
S2:配置数据装载工具SQL Loader的参数;
S3:根据配置参数,判断需要加载的文件的记录数是否大于参数配置的记录限额值,如果是,则执行步骤S4;如果否,则执行步骤S6;
S4:根据参数配置的子文件记录数值将需要加载的文件顺序拆分为n个子文件;
S5:启动数据装载工具SQL Loader的m个子进程对子文件进行并行加载,每个子进程对多个子文件进行串行加载;
S6:对文件进行普通加载。
作为优选,步骤S4具体为:判断所述参数配置的子文件记录数值是否大于300000,如果是,则将文件顺序拆分为n个子文件,其中第一个到第n-1个子文件中的记录数为所述参数配置的子文件记录数值;如果否,则将文件顺序拆分为n个子文件,其中第一个到第n-1个子文件中的记录数为300000。
作为优选,步骤S3中,所述参数配置的记录限额值为500万。
作为优选,步骤S4中的拆分是用操作系统命令实现的。
作为优选,步骤S4中的所述n值为999。
作为优选,步骤S5中的所述m值不大于10。
作为优选,步骤S5中的所述m值为10,每个子进程最多对100个子文件进行串行加载。
与现有技术相比,本发明的将文件拆分后并行加载数据入库的方法的有益效果在于:先将文件拆分,启动数据装载工具SQL Loader中多进程对子文件并行加载,尤其利用了操作系统处理文件的高效率,弱化了SQL Loader加载文件的低效率,大大提高了数据加载入库的性能。
附图说明
图1为本发明的实施例的将文件拆分后并行加载数据入库的方法的流程图;
图2为采用图1所示的方法加载数据的过程示意图;
图3为图1所示的方法的步骤S5中各个子进程与所处理的子文件的对应关系示意图。
具体实施方式
下面结合附图和具体实施例对本发明的实施例的将文件拆分后并行加载数据入库的方法作进一步详细描述,但不作为对本发明的限定。
在对本发明说明之前,先对SQL Loader及相关技术应用做一下说明。SQL Loader是Oracle(例如Orancle8)提供的一个在操作系统命令下使用的数据装载工具,能够将数据从外部数据文件装载到Oracle数据库表中。SQL Loader至少需要涉及到2个核心文件:控制文件和数据文件。控制文件是能够被SQL Loader识别、用特定语言编写的文本文件,由控制文件通知SQL Loader将数据放在何处,并描述需要装载入Oracle数据库中的各类数据。数据文件是转换过程中的数据源,存放有要进行转换的数据。SQL Loader的工作机制为:从控制文件中读取指令,然后根据指令读取数据,最后将数据存入Oracle数据库表中。整个装载过程为:sqlldr命令→读取控制文件→读取数据文件→根据规则装载数据到数据库。
图1为本发明的实施例的将文件拆分后并行加载数据入库的方法的流程图;图2为采用图1所示的方法加载数据的过程示意图;图3为图1所示的方法的步骤S5中各个子进程与所处理的子文件的对应关系示意图。如图1至图3所示,本发明的实施例的将文件拆分后并行加载数据入库的方法,使用Oracle提供的数据装载工具SQL Loader将大数据量的文件中的数据加载入库,包括以下步骤:
S1:读取控制文件和数据文件,生成日志文件、坏文件和废弃文件。日志文件、坏文件和废弃文件记录了SQL Loader相关的过程信息。任何妨碍日志文件(log文件)创建的情形都将终止数据加载。坏文件(bad文件)记录了被SQL Loader拒绝的记录,写入坏文件的记录达到阈值时,将终止数据加载。如果控制文件中含有条件并且记录不能满足全部条件的时候,这些记录将被写入废弃文件(discard文件)。
S2:配置数据装载工具SQL Loader的参数。SQL Loader的参数包括direct参数、parallel参数、error参数、rows参数、readsize参数和bindsize参数。其中,direct参数用于设定SQL Loader使用直接路径加载,可以选择性地设定为true;parallel参数用于设定SQLLoader使用并行加载,在本实施例中可以选择性地设定为true;rows参数是数据库每次提交的行数,bindsize参数是数组的大小。每次读取的记录数必须小于rows值,并且大小不得超过bindsize值。
S3:根据配置参数,判断需要加载的文件的记录数是否大于参数配置的记录限额值,如果是,则执行步骤S4;如果否,则执行步骤S6,即对文件进行普通加载。显然,当文件记录数小于参数配置的记录限额值时,说明文件中数据大小不会对加载性能产生过多的影响,不需要进行拆分;当文件记录数大于参数配置的记录限额值,则需要按照本发明的方法进行拆分,以达到优化性能的效果。作为一种改进,参数配置的记录限额值可以优选为500万,这是基于系统资源优化以及文件加载性能综合得出的一个优选值。
S4:根据参数配置的子文件记录数值将需要加载的文件顺序拆分为n个子文件。参数配置的子文件记录数值是每个子文件中所包含的记录的条数。在本实施例中具体为:判断参数配置的子文件记录数值是否大于300000,如果是,则将文件顺序拆分为n个子文件,其中第一个到第n-1个子文件中的记录数为参数配置的子文件记录数值;如果否,则将文件顺序拆分为n个子文件,其中第一个到第n-1个子文件中的记录数为300000。本发明的实施例的将文件拆分后并行加载数据入库的方法是根据参数配置的子文件记录数值来确定子文件中的记录数。也就是说,以参数配置的子文件记录数值或者300000行数顺序地拆分文件。第一个到第n-1个子文件中的记录数相同,第n个子文件可以与前n-1个子文件中的记录数不同。作为一种改进,本发明的实施例的将文件拆分后并行加载数据入库的方法用操作系统命令对文件进行拆分,从而利用了操作系统处理文件的高效率,弱化了SQLLoader加载文件的低效率。针对不同的操作系统,例如Linux操作系统等,其拆分文件的命令相应不同,所调用的程序也相应不同。作为更进一步的改进,本实施例中可以将一个文件拆分成999个子文件,即,n值为999。拆分前的文件记录数越多,参数配置的子文件记录数值可以配置的更大以使得n值为999,反之则反。这样的参数配置和拆分配置经过测试,可以满足系统资源以及加载性能的最优化。
S5:启动数据装载工具SQL Loader的m个子进程对子文件进行并行加载,每个子进程对多个子文件进行串行加载。SQL Loader启动多个子进程对子文件进行并行加载,m值优选不大于10,以获得优化的系统响应以及加载性能。作为一种改进,如图3所示,SQL Loader启动10个子进程,每个子进程最多对100个子文件进行串行加载。文件加载成功后,删除子文件。文件没加载成功,子文件将不会删除,需要手工操作。
S6:对文件进行普通加载。
以上实施例仅为本发明的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域技术人员可以在本发明的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。
Claims (7)
1.一种将文件拆分后并行加载数据入库的方法,使用Oracle提供的数据装载工具SQL Loader将大数据量的文件中的数据加载入库,其特征在于,包括以下步骤:
S1:读取控制文件和数据文件,生成日志文件、坏文件和废弃文件;
S2:配置数据装载工具SQL Loader的参数;
S3:根据配置参数,判断需要加载的文件的记录数是否大于参数配置的记录限额值,如果是,则执行步骤S4;如果否,则执行步骤S6;
S4:根据参数配置的子文件记录数值将需要加载的文件顺序拆分为n个子文件;
S5:启动数据装载工具SQL Loader的m个子进程对子文件进行并行加载,每个子进程对多个子文件进行串行加载;
S6:对文件进行普通加载。
2.根据权利要求1所述的将文件拆分后并行加载数据入库的方法,其特征在于,步骤S4具体为:判断所述参数配置的子文件记录数值是否大于300000,如果是,则将文件顺序拆分为n个子文件,其中第一个到第n-1个子文件中的记录数为所述参数配置的子文件记录数值;如果否,则将文件顺序拆分为n个子文件,其中第一个到第n-1个子文件中的记录数为300000。
3.根据权利要求1所述的将文件拆分后并行加载数据入库的方法,其特征在于,步骤S3中,所述参数配置的记录限额值为500万。
4.根据权利要求1所述的将文件拆分后并行加载数据入库的方法,其特征在于,步骤S4中的拆分是用操作系统命令实现的。
5.根据权利要求2所述的将文件拆分后并行加载数据入库的方法,其特征在于,步骤S4中的所述n值为999。
6.根据权利要求5所述的将文件拆分后并行加载数据入库的方法,其特征在于,步骤S5中的所述m值不大于10。
7.根据权利要求6所述的将文件拆分后并行加载数据入库的方法,其特征在于,步骤S5中的所述m值为10,每个子进程最多对100个子文件进行串行加载。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013100099968A CN103077241A (zh) | 2013-01-10 | 2013-01-10 | 将文件拆分后并行加载数据入库的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013100099968A CN103077241A (zh) | 2013-01-10 | 2013-01-10 | 将文件拆分后并行加载数据入库的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103077241A true CN103077241A (zh) | 2013-05-01 |
Family
ID=48153771
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013100099968A Pending CN103077241A (zh) | 2013-01-10 | 2013-01-10 | 将文件拆分后并行加载数据入库的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103077241A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104484441A (zh) * | 2014-12-23 | 2015-04-01 | 中国银行股份有限公司 | 文件批量处理及调度的方法 |
CN104572596A (zh) * | 2013-10-25 | 2015-04-29 | 北大方正集团有限公司 | 光栅化处理方法、处理装置和处理系统 |
CN104700255A (zh) * | 2013-12-06 | 2015-06-10 | 腾讯科技(北京)有限公司 | 多进程处理方法、装置和系统 |
CN105912609A (zh) * | 2016-04-06 | 2016-08-31 | 中国农业银行股份有限公司 | 一种数据文件处理方法和装置 |
CN106294683A (zh) * | 2016-08-05 | 2017-01-04 | 中国银行股份有限公司 | 一种文件拆分方法及装置 |
CN106952163A (zh) * | 2016-01-07 | 2017-07-14 | 平安科技(深圳)有限公司 | 保险数据处理方法及系统 |
CN107798138A (zh) * | 2017-11-23 | 2018-03-13 | 广东电网有限责任公司电力科学研究院 | 一种实时数据装载方法及装置 |
CN110347673A (zh) * | 2019-05-30 | 2019-10-18 | 平安银行股份有限公司 | 数据文件加载方法、装置、计算机设备以及存储介质 |
CN111125769A (zh) * | 2019-12-27 | 2020-05-08 | 上海轻维软件有限公司 | 基于oracle数据库的海量数据脱敏方法 |
CN111767331A (zh) * | 2020-06-17 | 2020-10-13 | 北京思特奇信息技术股份有限公司 | 千万量级数据在关系型数据库中的多任务可视化激活方法 |
CN117573620A (zh) * | 2024-01-10 | 2024-02-20 | 中电数据产业有限公司 | 一种大文件拆分并发读取方法和系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101620634A (zh) * | 2009-07-29 | 2010-01-06 | 中兴通讯股份有限公司 | 一种数据统计装置及方法 |
-
2013
- 2013-01-10 CN CN2013100099968A patent/CN103077241A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101620634A (zh) * | 2009-07-29 | 2010-01-06 | 中兴通讯股份有限公司 | 一种数据统计装置及方法 |
Non-Patent Citations (4)
Title |
---|
YAANZY: "《sqlldr并行加载问题》", 23 June 2006 * |
任永昌: "Oracle数据库装载外部数据工具SQL_Loader的应用", 《渤海大学学报》 * |
王昊: "Oracle数据库装载外部数据工具SQL_Loader的应用", 《辽宁工业大学学报》 * |
秦峰巍: "基于SQL Loader的海量数据装载方案优化", 《武汉理工大学学报信息与管理工程版》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572596A (zh) * | 2013-10-25 | 2015-04-29 | 北大方正集团有限公司 | 光栅化处理方法、处理装置和处理系统 |
CN104700255B (zh) * | 2013-12-06 | 2020-04-10 | 腾讯科技(北京)有限公司 | 多进程处理方法、装置和系统 |
CN104700255A (zh) * | 2013-12-06 | 2015-06-10 | 腾讯科技(北京)有限公司 | 多进程处理方法、装置和系统 |
CN104484441A (zh) * | 2014-12-23 | 2015-04-01 | 中国银行股份有限公司 | 文件批量处理及调度的方法 |
CN106952163A (zh) * | 2016-01-07 | 2017-07-14 | 平安科技(深圳)有限公司 | 保险数据处理方法及系统 |
CN106952163B (zh) * | 2016-01-07 | 2021-04-13 | 平安科技(深圳)有限公司 | 保险数据处理方法及系统 |
CN105912609A (zh) * | 2016-04-06 | 2016-08-31 | 中国农业银行股份有限公司 | 一种数据文件处理方法和装置 |
CN105912609B (zh) * | 2016-04-06 | 2019-04-02 | 中国农业银行股份有限公司 | 一种数据文件处理方法和装置 |
CN106294683A (zh) * | 2016-08-05 | 2017-01-04 | 中国银行股份有限公司 | 一种文件拆分方法及装置 |
CN107798138A (zh) * | 2017-11-23 | 2018-03-13 | 广东电网有限责任公司电力科学研究院 | 一种实时数据装载方法及装置 |
CN110347673A (zh) * | 2019-05-30 | 2019-10-18 | 平安银行股份有限公司 | 数据文件加载方法、装置、计算机设备以及存储介质 |
CN111125769A (zh) * | 2019-12-27 | 2020-05-08 | 上海轻维软件有限公司 | 基于oracle数据库的海量数据脱敏方法 |
CN111125769B (zh) * | 2019-12-27 | 2023-09-19 | 上海轻维软件有限公司 | 基于oracle数据库的海量数据脱敏方法 |
CN111767331A (zh) * | 2020-06-17 | 2020-10-13 | 北京思特奇信息技术股份有限公司 | 千万量级数据在关系型数据库中的多任务可视化激活方法 |
CN117573620A (zh) * | 2024-01-10 | 2024-02-20 | 中电数据产业有限公司 | 一种大文件拆分并发读取方法和系统 |
CN117573620B (zh) * | 2024-01-10 | 2024-04-02 | 中电数据产业有限公司 | 一种大文件拆分并发读取方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103077241A (zh) | 将文件拆分后并行加载数据入库的方法 | |
CN101630290B (zh) | 重复数据处理方法和装置 | |
CN105224237A (zh) | 一种数据存储方法及装置 | |
CN100407123C (zh) | 数据存储设备、重构控制设备、重构控制方法 | |
CN104360914B (zh) | 增量快照方法和装置 | |
CN104317960A (zh) | 一种批处理作业的处理方法和装置 | |
CN105701190A (zh) | 一种数据同步的方法和装置 | |
CN103917960A (zh) | 存储装置和副本数据检测方法 | |
CN103559184A (zh) | 表单页面的显示方法和装置 | |
CN105653647A (zh) | Sql语句的信息采集方法及系统 | |
CN103810099A (zh) | 代码跟踪方法及其系统 | |
US20170177424A1 (en) | Specific risk toolkit | |
KR101990329B1 (ko) | 로그 데이터 분석을 이용한 데이터베이스 복구 속도 향상 기법 및 장치 | |
CN102073553A (zh) | 一种文件恢复的方法和装置 | |
CN105389268A (zh) | 资料储存系统及其运作方法 | |
CN109522281A (zh) | 一种分布式文件系统数据快速拷贝的方法 | |
CN102073554A (zh) | 一种文件异常关闭的恢复方法和装置 | |
CN103559119A (zh) | 文件操作请求处理方法及装置 | |
CN103841168A (zh) | 数据副本更新方法及元数据服务器 | |
CN103092955B (zh) | 检查点操作方法、装置及系统 | |
CN104615948A (zh) | 一种自动识别文件完整性与恢复的方法 | |
CN102789425B (zh) | 基于flash存储介质的文件读写方法 | |
CN108319694A (zh) | 一种历史数据的自动清理方法及装置 | |
CN102141964B (zh) | 一种磁带重复使用的方法及装置 | |
CN106126487A (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 | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130501 |