CN111241171A - 数据库全量数据抽取方法 - Google Patents
数据库全量数据抽取方法 Download PDFInfo
- Publication number
- CN111241171A CN111241171A CN201911033825.2A CN201911033825A CN111241171A CN 111241171 A CN111241171 A CN 111241171A CN 201911033825 A CN201911033825 A CN 201911033825A CN 111241171 A CN111241171 A CN 111241171A
- Authority
- CN
- China
- Prior art keywords
- data
- extraction
- extracting
- full
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 22
- 238000013075 data extraction Methods 0.000 title claims abstract description 18
- 238000013500 data storage Methods 0.000 claims abstract description 3
- 238000000605 extraction Methods 0.000 claims description 39
- 230000005540 biological transmission Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011068 loading method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
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/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- 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/214—Database migration support
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)
- Storage Device Security (AREA)
Abstract
本发明公开了一种数据库全量数据抽取方法,包括如下步骤:全量数据抽取配置:配置数据源信息,抽取内容,抽取模式及抽取对象;全量数据抽取:读取数据字典获取要抽取的对象内容,以一张表为单位,多个线程并发抽取,采取生产者与消费者模式,将数据内容存储在缓存中;全量数据保存与记录:将缓存中的数据保存到本地文件,并记录当前已抽取表的条数,主键字段值,是否完成状态,保存在本地用于断点续传功能。本发明具有特点。
Description
技术领域
本发明涉及数据库数据处理技术领域,尤其是涉及一种能够快速、准确、及时地抽取全量数据的数据库全量数据抽取方法。
背景技术
近年来,随着信息技术的进步和互联网的快速发展,积累了大量的数据库业务数据。需要对全量数据进行数据抽取转换,装载,备份,以应对发生自然灾害等异常情况,保障数据不丢失。
目前,oracle数据库是通过数据泵(expdp/impdp)对全量数据进行实施迁移,然而实际业务中需要将数据进行过滤转换映射操作,单纯的数据迁移并不能满足实际业务需求,灵活度不够,继而需要一种全量数据抽取方案。
而在全量数据抽取过程中,无法保证大数据量下数据的完整性、准确性、一致性的同时,在服务器发生故障重新恢复正常后,需重新抽取,无法保证数据抽取的速度。
发明内容
本发明的发明目的是为了克服现有技术中的全量数据抽取过程中,无法保证大数据的完整性、准确性、一致性,无法保证数据抽取速度的不足,提供了一种能够快速、准确、及时地抽取全量数据的数据库全量数据抽取方法。
为了实现上述目的,本发明采用以下技术方案:
一种数据库全量数据抽取方法,包括如下步骤:
(1-1)全量数据抽取配置:配置数据源信息,抽取内容,抽取模式及抽取对象;
(1-2)全量数据抽取:读取数据字典获取要抽取的对象内容,以一张表为单位,多个线程并发抽取,采取生产者与消费者模式,将数据内容存储在缓存中;
(1-3)全量数据保存与记录:将缓存中的数据保存到本地文件,并记录当前已抽取表的条数,主键字段值,是否完成状态,保存在本地用于断点续传功能。
能够快速、准确、及时地抽取全量数据,尤其是在海量数据的情况下,能够完成全量数据的抽取,同时保证实现难度小,节省用户的成本,能够在服务器发生故障重新恢复正常后,继续抽取;不会重复抽取。
作为优选,所述数据源信息包括ip地址,端口,实例,用户名和密码;所述抽取内容为数据或数据和结构,所述抽取模式为用户级别或表格级别;所述抽取对象为抽取的用户下的表或排除的表。
作为优选,所述多个线程并发抽取是将并发线程的个数设置成可配置,多张表同时进行抽取,根据服务器性能动态修改;
所述生成者与消费者模式,是开启以表为单位的extracter抽取线程和worker线程,extracter线程读取数据字典,并将从数据字典获取的行数据内容存放到队列中,worker线程将队列中的行数据批量读取并处理。
作为优选,所述数据保存为将数据进行压缩与加密再保存到本地;所述断点续传功能,即当程序中断重启后,全量数据抽取在上次抽取的基础上继续抽取,无需重头开始抽取。
作为优选,所述记录主键字段值,用于断点续传,程序重启后extracter抽取线程在该主键字段值的基础上读取数据字典。
作为优选,所述记录是否完成状态,用于断点续传,当状态为未开始或未完成时,继续抽取.
作为优选,所述当前已抽取表的条数,用于结束抽取时和数据库中该表的总行数进行比较,判断是否丢失数据,保障数据的准确性。
因此,本发明具有如下有益效果:能够快速、准确、及时地抽取全量数据,在海量数据的情况下,能够完成全量数据的抽取,同时保证实现难度小,节省用户的成本,能够在服务器发生故障重新恢复正常后,继续抽取;不会重复抽取。
附图说明
图1是本发明的一种示意图;
图2是本发明的一种流程图。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步的描述。
如图1所示,本发明提供了一种数据库全量数据抽取装置,主要包括:全量数据抽取配置,多线程并行抽取,全量数据保存与记录;
包括如下步骤:
A、应用程序通过数据库链接配置数据源信息,抽取内容,抽取模式及抽取对象;
B、多线程并行抽取,以表为单位实现多个线程,并行抽取的最大线程数可配置,extracter线程根据配置信息读取数据字典,获取要抽取的对象内容,并将行数据内容存储在队列中,worker线程批量读取队列中的行数据并进行处理,处理完后存储在缓存中;
C、全量数据保存与记录,将缓存中的数据进行压缩加密并保存到本地文件,且记录当前已抽取表的条数,主键字段值,是否完成状态信息,保存在本地用于断点续传功能。
下面根据上述步骤进行具体描述。
如图2所示,首先配置源数据库信息包括ip地址,端口,实例,用户名和密码;配置抽取内容可以选择仅数据或数据和结构,配置抽取模式可以选择用户级别或表格级别;配置抽取对象可以选择所要抽取的哪些用户下的表或排除的表。
然后,全量数据抽取线程,以表为单位开启多个extracter和worker抽取线程,extracter线程先读取上次抽取保存在本地的该表抽取记录文件,获取是否完成抽取,如果已经完成,extracter线程将状态发送给worker线程并停止线程,worker线程收到已完成,则停止线程;如果为未完成或未开始状态,则获取上次抽取的主键字段值,extracter线程在此主键字段值的基础上读取数据字典,worker线程批量读取extracter线程存放到队列中的行数据内容,并进行处理,处理完后存储在缓存中;当extracter线程读取数据字典完成则停止线程,并将完成状态发送给worker线程,worker线程获取到已完成就停止线程。
最后,将缓存中的行数据进行加密压缩保存到本地文件,并记录该行数据的主键值,已抽取条数和抽取状态在本地文件中。
下面举例说明:
假设oracle数据库某个用户下有N张100万行的大表,表1-N,假设表结构为ainteger primary key,b varchar,c number(10)。
1)首先,根据上述步骤中的配置源数据库信息,将抽取内容配置成数据,抽取模式配置成表格级别,抽取对象配置成仅抽取表1-N,其它表全部排除。
2)然后,创建线程池,将以表1-N生成的extracter1-N和worker1-N线程放到线程池缓存队列中,最多5个线程并发抽取。extracter1-N和worker1-N线程分别开始抽取表1-N,extracter1-N线程分别先读取本地的表1-N记录文件,获取表1-N上次抽取的主键a的值和上次抽取状态lastStatus,如果lastStatus为已完成,extracter1-N将已完成状态发送给worker1-N线程并停止线程,worker1-N线程收到已完成就停止线程。如果lastStatus为未完成或未开始状态,extracter1-N线程分别在上次抽取的主键a的值的基础上读取表1-N的数据字典,并将数据放到队列中,worker1-N线程分别每次批量从队列中读取数据并进行处理,处理完后存储在缓存中。
3)最后,将缓存中的行数据进行加密压缩保存到本地文件,并记录该行数据的主键值,已抽取条数和抽取状态在本地文件中。
应理解,本实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
Claims (7)
1.一种数据库全量数据抽取方法,其特征是,包括如下步骤:
(1-1)全量数据抽取配置:配置数据源信息,抽取内容,抽取模式及抽取对象;
(1-2)全量数据抽取:读取数据字典获取要抽取的对象内容,以一张表为单位,多个线程并发抽取,采取生产者与消费者模式,将数据内容存储在缓存中;
(1-3)全量数据保存与记录:将缓存中的数据保存到本地文件,并记录当前已抽取表的条数,主键字段值,是否完成状态,保存在本地用于断点续传功能。
2.根据权利要求1所述的数据库全量数据抽取方法,其特征是,所述数据源信息包括ip地址,端口,实例,用户名和密码;所述抽取内容为数据或数据和结构,所述抽取模式为用户级别或表格级别;所述抽取对象为抽取的用户下的表或排除的表。
3.根据权利要求1所述的数据库全量数据抽取方法,其特征是,所述多个线程并发抽取是将并发线程的个数设置成可配置,多张表同时进行抽取,根据服务器性能动态修改;
所述生成者与消费者模式,是开启以表为单位的extracter抽取线程和worker线程,extracter线程读取数据字典,并将从数据字典获取的行数据内容存放到队列中,worker线程将队列中的行数据批量读取并处理。
4.根据权利要求1所述的数据库全量数据抽取方法,其特征是,所述数据保存为将数据进行压缩与加密再保存到本地;所述断点续传功能,即当程序中断重启后,全量数据抽取在上次抽取的基础上继续抽取,无需重头开始抽取。
5.根据权利要求1所述的数据库全量数据抽取方法,其特征是,所述记录主键字段值,用于断点续传,程序重启后extracter抽取线程在该主键字段值的基础上读取数据字典。
6.根据权利要求1所述的数据库全量数据抽取方法,其特征是,所述记录是否完成状态,用于断点续传,当状态为未开始或未完成时,继续抽取。
7.根据权利要求1或2或3或4或5或6所述的数据库全量数据抽取方法,其特征是,所述当前已抽取表的条数,用于结束抽取时和数据库中该表的总行数进行比较,判断是否丢失数据,保障数据的准确性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911033825.2A CN111241171A (zh) | 2019-10-28 | 2019-10-28 | 数据库全量数据抽取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911033825.2A CN111241171A (zh) | 2019-10-28 | 2019-10-28 | 数据库全量数据抽取方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111241171A true CN111241171A (zh) | 2020-06-05 |
Family
ID=70871298
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911033825.2A Pending CN111241171A (zh) | 2019-10-28 | 2019-10-28 | 数据库全量数据抽取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111241171A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113672624A (zh) * | 2021-08-25 | 2021-11-19 | 中汽创智科技有限公司 | 一种数据处理方法、系统及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101697126A (zh) * | 2009-10-28 | 2010-04-21 | 山东中创软件商用中间件股份有限公司 | 一种针对Excel文件的增量数据的ETL实现方法 |
CN102375891A (zh) * | 2011-11-15 | 2012-03-14 | 山东浪潮金融信息系统有限公司 | 一种增量数据卸载和装载的实施工具 |
CN104182502A (zh) * | 2014-08-18 | 2014-12-03 | 浪潮(北京)电子信息产业有限公司 | 一种数据抽取方法及装置 |
US20150032758A1 (en) * | 2013-07-29 | 2015-01-29 | Sybase, Inc. | High Performance Index Creation |
CN104778182A (zh) * | 2014-01-14 | 2015-07-15 | 博雅网络游戏开发(深圳)有限公司 | 基于HBase的数据导入方法和系统 |
CN106294886A (zh) * | 2016-10-17 | 2017-01-04 | 北京集奥聚合科技有限公司 | 一种从HBase中全量抽取数据的方法及系统 |
CN109271435A (zh) * | 2018-09-14 | 2019-01-25 | 南威软件股份有限公司 | 一种支持断点续传的数据抽取方法及系统 |
-
2019
- 2019-10-28 CN CN201911033825.2A patent/CN111241171A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101697126A (zh) * | 2009-10-28 | 2010-04-21 | 山东中创软件商用中间件股份有限公司 | 一种针对Excel文件的增量数据的ETL实现方法 |
CN102375891A (zh) * | 2011-11-15 | 2012-03-14 | 山东浪潮金融信息系统有限公司 | 一种增量数据卸载和装载的实施工具 |
US20150032758A1 (en) * | 2013-07-29 | 2015-01-29 | Sybase, Inc. | High Performance Index Creation |
CN104778182A (zh) * | 2014-01-14 | 2015-07-15 | 博雅网络游戏开发(深圳)有限公司 | 基于HBase的数据导入方法和系统 |
CN104182502A (zh) * | 2014-08-18 | 2014-12-03 | 浪潮(北京)电子信息产业有限公司 | 一种数据抽取方法及装置 |
CN106294886A (zh) * | 2016-10-17 | 2017-01-04 | 北京集奥聚合科技有限公司 | 一种从HBase中全量抽取数据的方法及系统 |
CN109271435A (zh) * | 2018-09-14 | 2019-01-25 | 南威软件股份有限公司 | 一种支持断点续传的数据抽取方法及系统 |
Non-Patent Citations (2)
Title |
---|
段成;王增平;吴克河;: "一种轻量级电网实时数据ETL系统的设计与实现" * |
陈鸿雁;: "保险数据仓库数据抽取的设计与实现" * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113672624A (zh) * | 2021-08-25 | 2021-11-19 | 中汽创智科技有限公司 | 一种数据处理方法、系统及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11455217B2 (en) | Transaction consistency query support for replicated data from recovery log to external data stores | |
CN107704539B (zh) | 大规模文本信息批量结构化的方法及装置 | |
US9256665B2 (en) | Creation of inverted index system, and data processing method and apparatus | |
CN110569214A (zh) | 用于日志文件的索引构建方法、装置及电子设备 | |
CN109213432B (zh) | 利用日志结构合并树将数据写入的存储设备及其方法 | |
CN110737594B (zh) | 自动生成测试用例的数据库标准符合性测试方法及装置 | |
WO2019161645A1 (zh) | 基于Shell的数据表提取方法、终端、设备及存储介质 | |
CN102591864B (zh) | 比对系统中的数据更新方法及装置 | |
US11526465B2 (en) | Generating hash trees for database schemas | |
US6708185B2 (en) | SQL execution analysis | |
CN113297182B (zh) | 数据迁移方法、设备、存储介质及程序产品 | |
CN108628885B (zh) | 一种数据同步方法、装置及存储设备 | |
Tuan et al. | On the io characteristics of the sqlite transactions | |
CN110532347A (zh) | 一种日志数据处理方法、装置、设备和存储介质 | |
EP3889793A1 (en) | Preprocessing in database system workload capture and replay | |
CN111241171A (zh) | 数据库全量数据抽取方法 | |
CN108304527B (zh) | 一种数据提取方法 | |
CN109857792A (zh) | 一种异步大数据清洗转换的方法和系统 | |
CN108334675B (zh) | 数字飞行器工况集批量仿真的人工智能处理方法及系统 | |
US20150112947A1 (en) | System and method for database flow management | |
CN110765325A (zh) | 一种ceph分布式存储系统的运维分析方法及系统 | |
CN111177119A (zh) | 基于数据库的全量数据比对方法、装置、设备及存储介质 | |
CN112860376B (zh) | 一种快照链的制作方法、装置、电子设备及存储介质 | |
CN108052524B (zh) | 面向电镜数据存储系统的文件元数据获取方法与系统 | |
CN112395292A (zh) | 一种数据特征提取、匹配方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200605 |