一种基于ROWID的Oracle数据批量采集方法技术

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

A Oracle data batch acquisition method based on ROWID

The invention discloses an Oracle data batch acquisition method based on ROWID. The method interacts with Oracle database through JDBC interface and generates batch SQL statements using ROWID. Each SQL statement is responsible for collecting part of the data in the database table. The data collected by all SQL statements is complete data. Compared with the existing technology, the ROWID-based Oracle data batch acquisition method based on JDBC interface has the advantages of non-intrusion to Oracle database, simple technology, easy implementation, low development cost, flexible variety, scalability, no requirement for data quality, distributed batch operation and non-performance of data acquisition. Chang Gao has a wide range of application scenarios.

【技术实现步骤摘要】
一种基于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的并行线程数。SELECTRIDAS"ROWID"FROM(SELECTa.*,ROWNUMrnumFROM(SELECT/*+Parallel(pCount)*/ROWIDASRIDFROMtNameORDERBYROWID)a)WHEREMOD(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;SELECTcolumn_1,column_2,...column_xFROMtNameWHEREROWID>=ROWID_iANDROWID<ROWID_i+1;第n条SQL如下所示:ROWID队列第n条数据为ROWID_n;SELECTcolumn_1,column_2,...column_mFROMtNameWHEREROWID>=ROWID_n;步骤3)对批量生成的SQL语句进行分发;将批量生成的SQL语句分发到不同的线程、进程或服务器节点上去分布式并行执行;用基于异步排队的协议(如消息服务,Kafka等)可以实现此功能,NiFi等数据流工具也自带有数据分发功能。将所述的批量生成的SQL语句写入Kafka主题中,所有负责数据采集的节点使用相同的groupID消费数据,完成SQL语句分发。步骤4)获取到分发的SQL语句后,执行SQL语句,获取结果集;所述的分发的SQL语句被各数据采集节点获取后,通过JDBC方式执行SQL语句,获取的结果集即为采集的数据。步骤5)获取到分发的SQL语句后,将数据写入新的存储系统;所有获取数据后的数据采集节点将数据写入到同一个数据存储地址,完成数据汇总,如写入同一个Hive表或同一个HBase表中。通过上面具体实施方式,所述
的技术人员可容易的实现本专利技术。但是应当理解,本专利技术并不限于上述的几种具体实施方式。在公开的实施方式的基础上,所述
的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。本文档来自技高网
...

【技术保护点】
1.一种基于ROWID的Oracle数据批量采集方法,其特征在于,该方法通过JDBC接口与Oracle数据库交互,使用ROWID来生成批量SQL语句,每条SQL语句负责采集数据库表中的一部分数据,所有SQL语句采集的数据集合即为完整数据。

【技术特征摘要】
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.根据...

【专利技术属性】
技术研发人员:刘福才胡清肖雪王建华
申请(专利权)人:浪潮软件集团有限公司
类型:发明
国别省市:山东,37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1