CN108664616A - 一种基于ROWID的Oracle数据批量采集方法 - Google Patents

一种基于ROWID的Oracle数据批量采集方法 Download PDF

Info

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
Application number
CN201810453389.3A
Other languages
English (en)
Inventor
刘福才
胡清
肖雪
王建华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Software Group Co Ltd
Original Assignee
Inspur Software Group Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Software Group Co Ltd filed Critical Inspur Software Group Co Ltd
Priority to CN201810453389.3A priority Critical patent/CN108664616A/zh
Publication of CN108664616A publication Critical patent/CN108664616A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于ROWID的Oracle数据批量采集方法,该方法通过JDBC接口与Oracle数据库交互,使用ROWID来生成批量SQL语句,每条SQL语句负责采集数据库表中的一部分数据,所有SQL语句采集的数据集合即为完整数据。本发明的一种基于ROWID的Oracle数据批量采集方法和现有技术相比,该方法基于JDBC接口,对Oracle数据库无侵入,技术简单,易于实现、开发成本低、灵活多样,可扩展,对数据质量无要求,采用分布式批量作业,数据采集性能非常高,具有广泛的适用场景。

Description

一种基于ROWID的Oracle数据批量采集方法
技术领域
本发明涉及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)中所有获取数据后的数据采集节点将数据写入到同一个数据存储地址,完成数据汇总。
CN201810453389.3A 2018-05-14 2018-05-14 一种基于ROWID的Oracle数据批量采集方法 Pending CN108664616A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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数据库的访问方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
DREAMYACHT: "Oracle rowid详解", 《百度文库》 *

Cited By (4)

* Cited by examiner, † Cited by third party
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