[发明专利]一种基于ROWID的Oracle数据批量采集方法在审
申请号: | 201810453389.3 | 申请日: | 2018-05-14 |
公开(公告)号: | CN108664616A | 公开(公告)日: | 2018-10-16 |
发明(设计)人: | 刘福才;胡清;肖雪;王建华 | 申请(专利权)人: | 浪潮软件集团有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 刘继枝 |
地址: | 250100 山东*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 采集 适用场景 数据采集 数据集合 数据库表 完整数据 可扩展 侵入 灵活 开发 | ||
本发明公开了一种基于ROWID的Oracle数据批量采集方法,该方法通过JDBC接口与Oracle数据库交互,使用ROWID来生成批量SQL语句,每条SQL语句负责采集数据库表中的一部分数据,所有SQL语句采集的数据集合即为完整数据。本发明的一种基于ROWID的Oracle数据批量采集方法和现有技术相比,该方法基于JDBC接口,对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)中所有获取数据后的数据采集节点将数据写入到同一个数据存储地址,完成数据汇总。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮软件集团有限公司,未经浪潮软件集团有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810453389.3/2.html,转载请声明来源钻瓜专利网。