CN101751397B - 一种将文件导入数据库的方法及装置 - Google Patents
一种将文件导入数据库的方法及装置 Download PDFInfo
- Publication number
- CN101751397B CN101751397B CN 200810182404 CN200810182404A CN101751397B CN 101751397 B CN101751397 B CN 101751397B CN 200810182404 CN200810182404 CN 200810182404 CN 200810182404 A CN200810182404 A CN 200810182404A CN 101751397 B CN101751397 B CN 101751397B
- Authority
- CN
- China
- Prior art keywords
- task
- data
- file
- sorting
- database
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种将文件导入数据库的方法及装置,该方法包括将待入库文件按照分拣规则分拣为与数据库表对应的数据文件;以每个数据文件形成一个数据导入任务;以并行多任务方式执行所述数据导入任务。该装置包括数据分拣模块,用于将待入库文件按照分拣规则分拣为与数据库表对应的数据文件;任务工作单元,用于以并行多任务方式执行由每个数据文件形成的数据导入任务。本发明的方法及装置通过对待入库文件的分拣,形成与数据库表对应的数据文件,采用多任务并行入库方式,实现将海量数据快速导入到数据库中。
Description
技术领域
本发明涉及移动通信业务支撑领域,特别涉及一种将文件导入数据库的方法及装置。
背景技术
用户使用运营商的网络服务产生的服务使用记录,经过业务支撑系统计费批价处理后形成了用户话单。为了方便用户查询话单和工作人员在后台对话单进行统计,用户话单(即文件)需要导入数据库中。
对于运营商来说,随着用户数的增多和多种业务开展,用户话单数量也在剧增,例如某拥有1500万用户的运营商,每天需要入库的话单有15000万条话单,其中语音8000万条,短信4000万条左右。对于如此海量的话单,如何快速的导入数据库中,以方便用户实时查询、统计和分析?
目前,一般采用数据库批量处理技术将话单数据文件导入数据库中。如在一篇申请号为“200610059825”的中国专利申请文件中公开了一种数据快速入库方法。
其中,所述方法包括:(1)、下级节点收到数据包,将数据包处理成数据文件形式并保存,并将数据文件路径保存至下级节点中的数据队列中;(2)、下级节点中的数据处理线程根据下级节点中数据队列中保存的数据文件路径,采用数据库批处理技术将数据文件批量导入下级节点中的数据库中;(3)、下级节点将下级节点需要上报的数据文件压缩成数据压缩包,并上传至上级节点;(4)、上级节点收到数据压缩包后将数据压缩包进行解压缩,将解压缩后的数据文件进行保存,并将数据文件路径保存至上级节点中的数据队列中;(5)、上级节点中的数据处理线程根据上级节点中数据队列中保存的数据文件路径,采用数据库批处理技术将数据文件批量导入上级节点中的数据库中。
现有的话单入库技术存在如下缺陷:只是对话单数据文件进行排队、然后采用数据库批处理技术将话单文件导入数据库中,这种方式只能对单个话单数据文件进行批量导入处理,不能对多个话单文件同时进行批量处理,特别是某个话单文件需要导入到多个数据库表时,必须对话单文件进行处理,形成和数据库表匹配的数据格式,对此数据文件进行多次批量导入,才可将此数据文件全部导入到数据库中。因此现有的话单入库技术对于海量话单数据来说,无法达到快速入库的效果。
发明内容
本发明的目的是为了克服上述现有技术中的缺陷,通过对待入库文件的分拣,形成与数据库表对应的数据文件,采用多任务并行入库方式,实现将海量数据快速导入到数据库中。
本发明提供的将文件导入数据库的方法包括以下步骤:将待入库文件按照分拣规则分拣为与数据库表对应的数据文件;以每个数据文件形成一个数据导入任务;以并行多任务方式执行所述数据导入任务。
上述技术方案中,分拣规则记录待入库文件的文件名以及该待入库文件需要导入的至少一个数据库表;将待入库文件按照分拣规则分拣为数据文件进一步包括:由待入库文件生成至少一个数据文件,所述数据文件分别对应于该待入库文件需要导入的所有数据库中的一个数据库表。
上述技术方案中,还包括:接收多个待入库文件,并行执行由多个待入库文件形成的数据导入任务。
上述技术方案中,以并行多任务方式执行数据导入任务进一步包括:数据导入任务与任务工作单元一一对应;多个任务工作单元接收数据导入任务;多个任务工作单元并行完成数据导入任务,将数据批量导入到数据库中。
上述技术方案中,还包括根据数据导入任务的负荷情况,对任务工作单元的数量以及任务工作单元所在的任务工作池的容量进行控制。
上述技术方案中,将待入库文件按照分拣规则分拣为与数据库表对应的数据文件的步骤之前还可以包括:根据待入库文件名匹配规则搜索入口处的待入库文件,并将待入库文件列表装入内存。
上述技术方案中,还可以包括对所述搜索、分拣的结果进行记录,并对数据导入任务的分发进行控制。
本发明提供的将文件导入数据库的装置,包括:数据分拣模块,用于将待入库文件按照分拣规则分拣为与数据库表对应的数据文件;任务工作单元,用于以并行多任务方式执行由每个数据文件形成的数据导入任务。
上述涉及装置的技术方案中,还包括:任务工作池容量控制模块,用于根据数据导入任务的负荷情况,对任务工作单元的数量以及任务工作单元所在的任务工作池的容量进行控制。
上述涉及装置的技术方案中,还包括:待入库文件搜索模块,用于根据待入库文件名匹配规则搜索入口处的待入库文件,并将待入库文件列表装入内存。
上述涉及装置的技术方案中,还包括:事务控制模块,用于对搜索、分拣的结果进行记录,并将数据导入任务分发至相应的任务工作单元进行控制。
与现有技术相比,本发明具有以下优点:
通过对待入库文件分拣,形成与数据库表对应的数据文件,避免多个待入库文件同时导入同一张数据表中造成资源访问频繁,带来效率不高问题;以并行多任务方式执行数据导入任务,缩短了文件入库处理时间。
附图说明
图1是本发明将文件导入数据库(以一批话单文件为例)的装置示意图(实施例1);
图2是本发明实施例1中主工作单元结构示意图;
图3是本发明实施例1中协调工作单元结构示意图。
图4是本发明将文件导入数据库(以一批话单文件为例)的方法示意图(实施例2);
具体实施方式
下面结合附图,对本发明的具体实施方式进行详细描述。
图1示出了话单快速入库装置的结构示意图,主要涉及主工作单元、协调工作单元、任务工作池。
具体说明如下:
主工作单元101
主工作单元中保存了话单文件名匹配规则、数据分拣规则、配置数据、事务表,主要负责准备数据导入任务、配置数据维护和日志处理。
主工作单元包括话单文件搜索模块、数据分拣模块、事务控制模块、日志处理、配置数据维护模块。
图2示出了主工作单元的结构示意图,主要涉及话单文件搜索模块、数据分拣模块、事务控制模块、日志处理、配置数据维护模块。
主工作单元的话单文件搜索模块201根据话单文件名匹配规则搜索入口处的多个话单文件,可以搜索全部文件,也可以搜索某些类型的文件,将话单文件列表按时间顺序装载进内存的链表中;并向事务控制模块反馈批量话单文件的名称,记录在事务表中;
数据分拣模块202负责对内存中话单文件列表按数据分拣规则分拣成和数据库表对应的数据文件,一个数据文件对应一个数据导入任务。一个话单文件有可能会导入到多个数据库表中,某个数据库表的数据可能由多个话单文件中的数据导入,因此需要将话单文件进行分拣。数据分拣模块将数据导入任务列表和状态反馈给事务控制模块,记录进事务表中。
事务控制模块203负责将批量文件名称和对应的数据导入列表、处理状态记录进事务表中,保证话单文件完整无误的从入口直到导入到数据库中,同时进行事务的断点记录,若出错则记录日志,若临时中断则将从事务的断点处恢复处理。事务表由事务唯一标识标志每条事务,每条事务中记录了批量话单名称列表,数据导入任务列表和状态,只有某批量话单对应的数据导入任务全部完成后,才将批量话单移动到出口目录。
日志处理模块204负责将所有模块的日志记录,分模块、分严重级别记录运行日志和处理日志。
配置数据维护模块205负责主工作单元初始化时加载配置数据,动态发现配置数据文件的变化,维护内存中的配置数据。
主工作单元和协调工作单元连接:主工作单元向协调工作单元提供数据导入任务,并从协调工作单元处获取任务完成状态,进行事务控制,只有一批话单文件对应的所有数据导入任务完成后,事务才算完成。
协调工作单元102
协调工作单元中保存了数据导入任务的状态信息、任务工作池配置信息。协调工作单元负责任务工作池的容量控制,维护任务工作池配置信息,并进行数据导入任务的分发和状态反馈。
协调工作单元包括任务工作池容量控制模块,任务工作池配置信息维护模块,数据导入任务分发模块。
图3示出了协调工作单元的结构示意图,主要涉及任务工作池容量控制模块301,任务工作池配置信息维护模块302,数据导入任务分发模块303。
任务工作池容量控制模块301根据任务工作池配置信息设置任务工作池的大小,并根据数据导入任务的负荷情况调整任务工作池的大小,但是增加或减少任务工作池中任务工作单元的数量必须符合事先设置的任务工作池配置数据。
任务工作池配置信息维护模块302负责任务工作池初始化时加载配置数据,动态发现配置数据文件的变化,维护内存中的配置数据。
数据导入任务分发模块303负责将主工作单元的数据导入任务分发给任务工作池,并负责维护数据导入任务的状态,并将此状态反馈给主工作单元的事务控制模块;并负责向任务工作池容量控制模块提供数据导入任务的负荷情况,由其动态调整任务工作池大小。
协调工作单元和主工作单元及任务工作池连接:协调工作单元接收主工作单元的数据导入任务,并向主工作单元的事务控制模块反馈数据导入任务的状态,以便主工作单元进行事务控制;协调工作单元根据任务工作单元的配置信息,对任务工作池进行容量控制,根据任务工作单元的空闲情况对任务工作池中的任务工作单元进行数据导入任务的分发,并从任务工作池中获取数据导入任务的状态。
任务工作池103
任务工作池由若干个任务工作单元组成,通过多个任务工作单元并行完成数据导入任务,每个任务采取数据库批处理导入方法,将数据快速导入数据库中。任务工作单元负责接收数据导入任务,将数据批量导入到数据库中,并向协调工作单元反馈数据导入任务的状态。当数据导入任务结束后,任务工作单元处于空闲状态,任务工作单元和协调工作单元连接:任务工作单元从协调工作单元处获取数据导入任务,如果有则处理之,然后接着提取任务,如果没有任务,则进入空闲状态,并在完成任务后将数据导入任务的状态反馈给协调工作单元。
实施例1中的装置通过主工作单元中的话单文件搜索模块及数据分拣模块对话单文件进行处理,以及主工作单元、协调工作单元及任务工作池的交互,将多个数据导入任务与多个任务工作单元相对应,实现了将海量话单通过批量处理、多任务并行方式快速入库,缩短了话单入库处理时间。
以处理将一批话单文件导入到数据库中为例(本发明的实施例2),结合图4,说明话单快速入库的具体流程:
步骤1,主工作单元的话单文件搜索模块根据话单文件名匹配规则搜索入口的多个话单文件,将话单文件列表装入内存;
步骤2,主工作单元的话单搜索模块向事务控制模块反馈此批话单名称,记录在事务表中;
步骤3,主工作单元的数据分拣模块处理内存中的话单文件列表,按数据分拣规则分拣成和数据库表对应的数据文件,每个数据文件形成一个数据导入任务;
上述步骤3为本发明的重要步骤,一个待入库的话单文件有可能会导入到多个数据库表中,某个数据库表的数据可能由多个话单文件进行数据导入,因此需要将待入库的话单文件进行分拣。也就是说,本发明方法可以实现M个待入库文件到N个数据库表的批量导入。
在这里,是对多个待入库文件进行批量分拣处理,根据分拣规则,形成多个数据文件,每个分拣后的文件(数据文件)对应一个数据导入任务,也是对应数据库中的一个数据库表。这样可以采取数据库的批量数据导入技术,即将一个数据文件采取直接批量导入的方法导入到数据库的一张数据表中。分拣的目的就是避免多个文件同时导入同一张表中造成资源访问频繁,带来效率不高问题。这里的分拣规则,是根据待入库文件的内容将多个待入库的话单文件转换成数据文件的规则。
例如:待入库的话单文件包括A1、A2、A3三个文件,数据库表包括语音表voice、短信表sms、梦网表ismg,分拣的规则是分析A1、A2和A3文件内容,若是语音类型的话单则分拣到语音文件B1_voice中、若是短信类型的话单则分拣到短信文件B2_sms中、若是梦网类型的话单则分拣到梦网文件B3_ismg中。经过分拣后,形成数据文件B1_voice、B2_sms、B3_ismg,然后通过并行多任务的方式将B1、B2、B3文件同时导入到数据库的三张表中。由于分拣后的数据文件要导入的表的名称就记录在数据文件文件名中,所以系统据此导入数据库中。
步骤4,主工作单元的数据分拣模块将数据导入任务列表和状态反馈给事务控制模块,记录进事务表中;
步骤5,主工作单元的事务控制模块向协调工作单元的数据导入任务分发模块提供数据导入任务;
步骤6,协调工作单元的数据导入任务分发模块向任务工作池容量控制模块提供数据导入任务的负荷情况;
步骤7,任务工作池容量控制模块获取任务池配置信息,决定增加或减少任务工作池中任务工作单元的数量;
步骤8,任务工作池容量控制模块调整任务工作池大小;
步骤9,数据导入任务分发模块负责将数据导入任务分发给任务工作池;
步骤10,任务工作池中的多个任务工作单元接收到数据导入任务;
步骤11,多个任务工作单元并行完成数据导入任务,将数据批量导入到数据库中;
步骤12,任务工作单元将任务的完成状态反馈给协调工作单元的数据导入任务分发模块;
步骤13,协调工作单元的数据导入任务分发模块将任务状态反馈给主工作单元的事务控制模块,由事务控制模块记录进事务表中;
步骤14,当所有的数据导入任务完成后,事务完成,此批话单文件移动到出口目录。
至此,话单快速入库的流程结束。
实施例2中的方法通过话单文件的搜索及数据分拣,并将多个数据导入任务与多个任务工作单元相对应,实现了将海量话单通过批量处理、多任务并行方式快速入库,缩短了话单入库处理时间,便于话单的查询、统计和分析等操作。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化(例如类似于其它文件快速入库)都应落入本发明的保护范围。
Claims (11)
1.一种将文件导入数据库的方法,其特征在于,包括:
将待入库文件按照分拣规则分拣为与数据库表对应的数据文件;
以每个数据文件形成一个数据导入任务;
以并行多任务方式执行所述数据导入任务。
2.根据权利要求1所述的方法,其特征在于,所述分拣规则记录待入库文件的文件名以及该待入库文件需要导入的至少一个数据库表;
所述将待入库文件按照分拣规则分拣为数据文件进一步包括:由所述待入库文件生成至少一个数据文件,所述数据文件分别对应于该待入库文件需要导入的所有数据库中的一个数据库表。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:接收多个待入库文件,并行执行由所述多个待入库文件形成的数据导入任务。
4.根据权利要求1至3任意一项所述的方法,其特征在于,所述以并行多任务方式执行数据导入任务进一步包括:
数据导入任务与任务工作单元一一对应;
多个所述任务工作单元接收数据导入任务;
多个任务工作单元并行完成数据导入任务,将数据批量导入到数据库中。
5.根据权利要求4所述的方法,其特征在于,还包括根据数据导入任务的负荷情况,对所述任务工作单元的数量以及任务工作单元所在的任务工作池的容量进行控制。
6.根据权利要求1至3中任意一项所述的方法,其特征在于,所述将待入库文件按照分拣规则分拣为与数据库表对应的数据文件的步骤之前还包括:
根据待入库文件名匹配规则搜索入口处的待入库文件,并将所述待入库文件列表装入内存。
7.根据权利要求6所述的方法,其特征在于,还包括对所述搜索、分拣的结果进行记录,并对数据导入任务的分发进行控制。
8.一种将文件导入数据库的装置,其特征在于,包括:
数据分拣模块,用于将待入库文件按照分拣规则分拣为与数据库表对应的数据文件;
任务工作单元,用于以并行多任务方式执行由每个数据文件形成的数据导入任务。
9.根据权利要求8所述的装置,其特征在于,还包括:
任务工作池容量控制模块,用于根据数据导入任务的负荷情况,对所述任务工作单元的数量以及任务工作单元所在的任务工作池的容量进行控制。
10.根据权利要求8或9所述的装置,其特征在于,还包括:
待入库文件搜索模块,用于根据待入库文件名匹配规则搜索入口处的待入库文件,并将所述待入库文件列表装入内存。
11.根据权利要求10所述的装置,其特征在于,还包括:
事务控制模块,用于对所述搜索、分拣的结果进行记录,并将数据导入任务分发至相应的所述任务工作单元进行控制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810182404 CN101751397B (zh) | 2008-12-04 | 2008-12-04 | 一种将文件导入数据库的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810182404 CN101751397B (zh) | 2008-12-04 | 2008-12-04 | 一种将文件导入数据库的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101751397A CN101751397A (zh) | 2010-06-23 |
CN101751397B true CN101751397B (zh) | 2013-03-27 |
Family
ID=42478388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200810182404 Active CN101751397B (zh) | 2008-12-04 | 2008-12-04 | 一种将文件导入数据库的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101751397B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101980187A (zh) * | 2010-10-13 | 2011-02-23 | 中兴通讯股份有限公司 | 数据入库方法和装置 |
CN102737016B (zh) * | 2011-03-30 | 2014-07-16 | 中国银联股份有限公司 | 基于并行处理的信息文件生成系统及方法 |
CN106604073B (zh) * | 2015-10-14 | 2019-12-24 | 北京国双科技有限公司 | 一种数据处理方法及装置 |
CN106293923A (zh) * | 2016-08-18 | 2017-01-04 | 北京集奥聚合科技有限公司 | 一种基于hadoop系统的数据处理和分发方法和系统 |
CN107122434A (zh) * | 2017-04-18 | 2017-09-01 | 北京思特奇信息技术股份有限公司 | 一种将对账文件导入数据库的方法和系统 |
CN109086330A (zh) * | 2018-07-03 | 2018-12-25 | 深圳鼎盛电脑科技有限公司 | 一种文件处理方法、装置、设备及存储介质 |
CN113961569B (zh) * | 2021-12-22 | 2022-04-12 | 上海柯林布瑞信息技术有限公司 | 一种医疗数据etl任务同步方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1885888A (zh) * | 2006-07-04 | 2006-12-27 | 华为技术有限公司 | 一种话单分拣方法及系统 |
CN101021801A (zh) * | 2006-11-30 | 2007-08-22 | 南京联创科技股份有限公司 | 流水线多进程之间基于消息队列的海量数据传输方法 |
CN101086732A (zh) * | 2006-06-11 | 2007-12-12 | 上海全成通信技术有限公司 | 一种海量数据管理方法 |
CN101262356A (zh) * | 2007-03-07 | 2008-09-10 | 中兴通讯股份有限公司 | 一种通讯网络的话单处理系统 |
-
2008
- 2008-12-04 CN CN 200810182404 patent/CN101751397B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101086732A (zh) * | 2006-06-11 | 2007-12-12 | 上海全成通信技术有限公司 | 一种海量数据管理方法 |
CN1885888A (zh) * | 2006-07-04 | 2006-12-27 | 华为技术有限公司 | 一种话单分拣方法及系统 |
CN101021801A (zh) * | 2006-11-30 | 2007-08-22 | 南京联创科技股份有限公司 | 流水线多进程之间基于消息队列的海量数据传输方法 |
CN101262356A (zh) * | 2007-03-07 | 2008-09-10 | 中兴通讯股份有限公司 | 一种通讯网络的话单处理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101751397A (zh) | 2010-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101751397B (zh) | 一种将文件导入数据库的方法及装置 | |
CN101556678A (zh) | 一种批处理业务的处理方法、系统及业务处理控制设备 | |
CN101350869B (zh) | 基于索引和散列的电信计费去重方法及设备 | |
CN105279276A (zh) | 一种数据库索引优化系统 | |
CN102236672A (zh) | 一种数据导入方法及装置 | |
CN105574052A (zh) | 数据库查询方法及装置 | |
CN101686488B (zh) | 业务处理方法、处理系统和工单处理装置 | |
CN102906751A (zh) | 一种数据存储、数据查询的方法及装置 | |
CN104077407B (zh) | 一种智能数据搜索系统及方法 | |
CN106777027B (zh) | 大规模并行处理行列混合数据存储装置及存储、查询方法 | |
CN104298736A (zh) | 数据集合连接方法、装置及数据库系统 | |
CN106528898A (zh) | 将非关系型数据库数据转换到关系型数据库的方法及装置 | |
CN103220412A (zh) | 移动终端的日程表管理方法及系统 | |
CN101957860A (zh) | 一种发布、搜索信息的方法及装置 | |
CN102486748A (zh) | 一种性能测试的方法及装置 | |
CN102364475A (zh) | 基于身份识别对检索结果排序的系统及方法 | |
CN106844497A (zh) | 一种数据库代码的检查装置和方法 | |
US8229946B1 (en) | Business rules application parallel processing system | |
CN102855297A (zh) | 一种控制数据传输的方法和连接器 | |
CN105630997A (zh) | 一种数据并行处理方法、装置及设备 | |
CN105159946A (zh) | 一种基于jQuery的表格排序方法及系统 | |
CN101697600A (zh) | 一种彩铃数据自动分析处理方法和装置 | |
CN105653533A (zh) | 一种更新分类关联词集合的方法和装置 | |
CN105630983A (zh) | 一种资源获取优化装置和方法 | |
CN114356051A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |