CN108664616A - 一种基于ROWID的Oracle数据批量采集方法 - Google Patents
一种基于ROWID的Oracle数据批量采集方法 Download PDFInfo
- Publication number
- CN108664616A CN108664616A CN201810453389.3A CN201810453389A CN108664616A CN 108664616 A CN108664616 A CN 108664616A CN 201810453389 A CN201810453389 A CN 201810453389A CN 108664616 A CN108664616 A CN 108664616A
- Authority
- CN
- China
- Prior art keywords
- sql statement
- rowid
- data
- acquisition
- method described
- 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 26
- 238000009826 distribution Methods 0.000 claims description 13
- 238000004519 manufacturing process Methods 0.000 claims description 9
- 241001269238 Data Species 0.000 claims description 4
- 238000003860 storage Methods 0.000 claims description 4
- 238000011017 operating method Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于ROWID的Oracle数据批量采集方法,该方法通过JDBC接口与Oracle数据库交互,使用ROWID来生成批量SQL语句,每条SQL语句负责采集数据库表中的一部分数据,所有SQL语句采集的数据集合即为完整数据。本发明的一种基于ROWID的Oracle数据批量采集方法和现有技术相比,该方法基于JDBC接口,对Oracle数据库无侵入,技术简单,易于实现、开发成本低、灵活多样,可扩展,对数据质量无要求,采用分布式批量作业,数据采集性能非常高,具有广泛的适用场景。
Description
技术领域
本发明涉及Oracle数据库技术领域,具体地说是一种基于ROWID的Oracle数据批量采集方法。
背景技术
Oracle数据采集是软件设计和研发人员经常遇到的一个需求,例如将老系统的Oracle数据导入新系统中,将子系统的Oracle数据汇总到数据中心系统中,将外部Oracle数据导入大数据平台中等。
目前已存在很多开源的Oracle采集工具,如Sqoop、Kattle、DataX等,均采用JDBC方式采集数据。JDBC方式简单、易上手,但这些产品都对数据质量有一定要求,无法采集一些数据质量较差的Oracle数据,如存在大量重复数据、缺少主键和索引、所有列都存在空值等情况。
发明内容
本发明的技术任务是提供一种基于ROWID的Oracle数据批量采集方法。
本发明的技术任务是按以下方式实现的:
一种基于ROWID的Oracle数据批量采集方法,该方法通过JDBC接口与Oracle数据库交互,使用ROWID来生成批量SQL语句,每条SQL语句负责采集数据库表中的一部分数据,所有SQL语句采集的数据集合即为完整数据。
该方法的操作步骤如下:
步骤1)通过JDBC接口获取ROWID;
步骤2)使用ROWID生成批量不同的SQL语句;
步骤3)对批量生成的SQL语句进行分发;
步骤4)获取到分发的SQL语句后,执行SQL语句,获取结果集;
步骤5)获取到分发的SQL语句后,将数据写入新的存储系统。
所述的步骤1)中,通过JDBC接口查询每条SQL起始的ROWID来生成SQL语句。
所述的生成的SQL语句每条采集n万条数据,然后对ROWID进行排序,并获取第1条、第n+1、第2n+1…条ROWID。
所述的获取ROWID的SQL语句采用并行模式执行,通过JDBC执行此SQL语句,结果集为一个有序的ROWID队列。
所述的步骤2)中SQL语句数量等于ROWID队列长度。
所述的步骤3)中批量生成的SQL语句分发到不同的线程、进程或服务器节点上去分布式并行执行。
将所述的批量生成的SQL语句写入Kafka主题中,所有负责数据采集的节点使用相同的groupID消费数据,完成SQL语句分发。
所述的步骤4)中所述的分发的SQL语句被各数据采集节点获取后,通过JDBC方式执行SQL语句,获取的结果集即为采集的数据。
所述的步骤5)中所有获取数据后的数据采集节点将数据写入到同一个数据存储地址,完成数据汇总。
本发明的一种基于ROWID的Oracle数据批量采集方法和现有技术相比,该方法基于JDBC接口,对Oracle数据库无侵入,技术简单,易于实现、开发成本低、灵活多样,可扩展,对数据质量无要求,采用分布式批量作业,数据采集性能非常高,具有广泛的适用场景。
附图说明
附图1为一种基于ROWID的Oracle数据批量采集方法的流程框图。
具体实施方式
实施例1:
该基于ROWID的Oracle数据批量采集方法的操作步骤如下:
步骤1)通过JDBC接口查询每条SQL起始的ROWID来生成SQL语句;所述的生成的SQL语句每条采集n万条数据,然后对ROWID进行排序,并获取第1条、第n+1、第2n+1…条ROWID;所述的获取ROWID的SQL语句采用并行模式执行,通过JDBC执行此SQL语句,结果集为一个有序的ROWID队列。ROWID队列用于生成批量SQL语句。
SQL语句如下所示: tName为数据采集的表名称;pSize为数据采集批量大小;pCount为执行此SQL的并行线程数。
SELECT RID AS "ROWID" FROM (
SELECT a.*, ROWNUM rnum FROM (
SELECT /*+ Parallel(pCount) */ ROWID AS RID FROM tName ORDER BY ROWID)
a) WHERE MOD(rnum, pSize) = 1;
步骤2)使用ROWID生成批量不同的SQL语句;
根据上一步获取到的有序的ROWID队列生成批量SQL语句,SQL语句数量等于ROWID队列长度;
设队列长度为n,数据采集的表名称为tName,数据采集的列名称包括column_1,column_2, ... column_x;
第i条SQL如下所示(i小于n):ROWID队列第i条数据为ROWID_i,第i+1条数据为ROWID_i+1;
SELECT column_1,column_2, ... column_x
FROM tName
WHERE ROWID >= ROWID_i AND ROWID < ROWID_i+1;
第n条SQL如下所示:ROWID队列第n条数据为ROWID_n;
SELECT column_1,column_2, ... column_m
FROM tName
WHERE ROWID >= ROWID_n;
步骤3)对批量生成的SQL语句进行分发;将批量生成的SQL语句分发到不同的线程、进程或服务器节点上去分布式并行执行;用基于异步排队的协议(如消息服务,Kafka等)可以实现此功能,NiFi等数据流工具也自带有数据分发功能。将所述的批量生成的SQL语句写入Kafka主题中,所有负责数据采集的节点使用相同的groupID消费数据,完成SQL语句分发。
步骤4)获取到分发的SQL语句后,执行SQL语句,获取结果集;所述的分发的SQL语句被各数据采集节点获取后,通过JDBC方式执行SQL语句,获取的结果集即为采集的数据。
步骤5)获取到分发的SQL语句后,将数据写入新的存储系统;所有获取数据后的数据采集节点将数据写入到同一个数据存储地址,完成数据汇总,如写入同一个Hive表或同一个HBase表中。
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的几种具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
Claims (10)
1.一种基于ROWID的Oracle数据批量采集方法,其特征在于,该方法通过JDBC接口与Oracle数据库交互,使用ROWID来生成批量SQL语句,每条SQL语句负责采集数据库表中的一部分数据,所有SQL语句采集的数据集合即为完整数据。
2.根据权利要求1所述的方法,其特征在于,该方法的操作步骤如下:
步骤1)通过JDBC接口获取ROWID;
步骤2)使用ROWID生成批量不同的SQL语句;
步骤3)对批量生成的SQL语句进行分发;
步骤4)获取到分发的SQL语句后,执行SQL语句,获取结果集;
步骤5)获取到分发的SQL语句后,将数据写入新的存储系统。
3.根据权利要求2所述的方法,其特征在于,所述的步骤1)中,通过JDBC接口查询每条SQL起始的ROWID来生成SQL语句。
4.根据权利要求3所述的方法,其特征在于,所述的生成的SQL语句每条采集n万条数据,然后对ROWID进行排序,并获取第1条、第n+1、第2n+1…条ROWID。
5.根据权利要求4所述的方法,其特征在于,所述的获取ROWID的SQL语句采用并行模式执行,通过JDBC执行此SQL语句,结果集为一个有序的ROWID队列。
6.根据权利要求2所述的方法,其特征在于,所述的步骤2)中SQL语句数量等于ROWID队列长度。
7.根据权利要求2所述的方法,其特征在于,所述的步骤3)中批量生成的SQL语句分发到不同的线程、进程或服务器节点上去分布式并行执行。
8.根据权利要求7所述的方法,其特征在于,将所述的批量生成的SQL语句写入Kafka主题中,所有负责数据采集的节点使用相同的groupID消费数据,完成SQL语句分发。
9.根据权利要求2所述的方法,其特征在于,所述的步骤4)中所述的分发的SQL语句被各数据采集节点获取后,通过JDBC方式执行SQL语句,获取的结果集即为采集的数据。
10.根据权利要求2所述的方法,其特征在于,所述的步骤5)中所有获取数据后的数据采集节点将数据写入到同一个数据存储地址,完成数据汇总。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810453389.3A CN108664616A (zh) | 2018-05-14 | 2018-05-14 | 一种基于ROWID的Oracle数据批量采集方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810453389.3A CN108664616A (zh) | 2018-05-14 | 2018-05-14 | 一种基于ROWID的Oracle数据批量采集方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108664616A true CN108664616A (zh) | 2018-10-16 |
Family
ID=63779399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810453389.3A Pending CN108664616A (zh) | 2018-05-14 | 2018-05-14 | 一种基于ROWID的Oracle数据批量采集方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108664616A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542593A (zh) * | 2018-11-27 | 2019-03-29 | 浪潮天元通信信息系统有限公司 | 一种基于nifi的数据处理流程设计方法 |
CN110647548A (zh) * | 2019-09-23 | 2020-01-03 | 浪潮软件股份有限公司 | 一种基于NiFi及其状态值的流式数据转批量方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101013435A (zh) * | 2007-02-05 | 2007-08-08 | 浪潮乐金信息系统有限公司 | Jdbc-odbc驱动的一种三层实现方法 |
US20110082889A1 (en) * | 2009-10-07 | 2011-04-07 | Oracle International Corporation | Online database modeling |
CN105653647A (zh) * | 2015-12-28 | 2016-06-08 | 中国联合网络通信集团有限公司 | Sql语句的信息采集方法及系统 |
CN107291948A (zh) * | 2016-09-21 | 2017-10-24 | 广州特道信息科技有限公司 | 一种分布式newSQL数据库的访问方法 |
-
2018
- 2018-05-14 CN CN201810453389.3A patent/CN108664616A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101013435A (zh) * | 2007-02-05 | 2007-08-08 | 浪潮乐金信息系统有限公司 | Jdbc-odbc驱动的一种三层实现方法 |
US20110082889A1 (en) * | 2009-10-07 | 2011-04-07 | Oracle International Corporation | Online database modeling |
CN105653647A (zh) * | 2015-12-28 | 2016-06-08 | 中国联合网络通信集团有限公司 | Sql语句的信息采集方法及系统 |
CN107291948A (zh) * | 2016-09-21 | 2017-10-24 | 广州特道信息科技有限公司 | 一种分布式newSQL数据库的访问方法 |
Non-Patent Citations (1)
Title |
---|
DREAMYACHT: "Oracle rowid详解", 《百度文库》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542593A (zh) * | 2018-11-27 | 2019-03-29 | 浪潮天元通信信息系统有限公司 | 一种基于nifi的数据处理流程设计方法 |
CN109542593B (zh) * | 2018-11-27 | 2024-02-09 | 浪潮通信信息系统有限公司 | 一种基于nifi的数据处理流程设计方法 |
CN110647548A (zh) * | 2019-09-23 | 2020-01-03 | 浪潮软件股份有限公司 | 一种基于NiFi及其状态值的流式数据转批量方法及系统 |
CN110647548B (zh) * | 2019-09-23 | 2023-03-21 | 浪潮软件股份有限公司 | 一种基于NiFi及其状态值的流式数据转批量方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9047333B2 (en) | Dynamic updates to a semantic database using fine-grain locking | |
CN103246749B (zh) | 面向分布式计算的矩阵数据库系统及其查询方法 | |
Sharma et al. | Sql and nosql databases | |
US9916313B2 (en) | Mapping of extensible datasets to relational database schemas | |
CN103440288A (zh) | 一种大数据存储方法及装置 | |
CN103914483B (zh) | 文件存储方法、装置及文件读取方法、装置 | |
CN107506464A (zh) | 一种基于ES实现HBase二级索引的方法 | |
Wang et al. | Distributed storage and index of vector spatial data based on HBase | |
Dede et al. | Processing Cassandra datasets with Hadoop-streaming based approaches | |
Shi et al. | You can stop early with COLA: online processing of aggregate queries in the cloud | |
CN103440246A (zh) | 用于MapReduce的中间结果数据排序方法及系统 | |
Silva et al. | Integrating big data into the computing curricula | |
CN108664616A (zh) | 一种基于ROWID的Oracle数据批量采集方法 | |
CN106909554A (zh) | 一种数据库文本表数据的加载方法及装置 | |
Balmin et al. | Clydesdale: structured data processing on Hadoop | |
Papadakis et al. | Blocking for large-scale entity resolution: Challenges, algorithms, and practical examples | |
Haque et al. | Distributed RDF triple store using hbase and hive | |
Peng et al. | An analysis platform of road traffic management system log data based on distributed storage and parallel computing techniques | |
Lou et al. | Research on data query optimization based on SparkSQL and MongoDB | |
Ding et al. | Commapreduce: An improvement of mapreduce with lightweight communication mechanisms | |
Fang et al. | A comparison of multi-tenant data storage solutions for Software-as-a-Service | |
Sreekanth et al. | Big data electronic health records data management and analysis on cloud with MongoDB: a NoSQL database | |
CN102087655A (zh) | 一种能体现人际关系网的网站系统 | |
Sahal et al. | Big data multi-query optimisation with Apache Flink | |
Ci et al. | An efficient block sampling strategy for online aggregation in the cloud |
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: 20181016 |