微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用JDBC应用程序从表中提取大量记录

如何解决使用JDBC应用程序从表中提取大量记录

我在Oracle数据库上有一些巨大的表(数百万条记录),我想借助Java JDBC应用程序提取所有记录并将它们存储为文件。 由于记录数量巨大,我想用WHERE语句对我的选择查询进行分区,并以迭代方式提取和存储。提取数据时(有INSERT / UPDATE / DELETE)。

到目前为止我一直尝试的操作:

  • 对行号使用分页方式,这并不完全正确,因为查询行号可能更改,因此查询可能会更改,因此查询可能无法覆盖所有记录。
    select * from ( select /*+ FirsT_ROWS(n) */   a.*,ROWNUM rnum 
      from ( your_query_goes_here,with order by ) a 
      where ROWNUM <= 
      :MAX_ROW_TO_FETCH ) where rnum  >= :MIN_ROW_TO_FETCH;

请参阅link

  • 使用主键拆分记录并提取和存储数据。 这是行不通的(至少在我看来),如果我们将使用复合主键或不使用NUMERIC主键(例如VARCHAR)会发生什么情况。
SELECT * FROM TABLE WHERE PRIMARY_KEY < $MAX_DESIRE AND PRIMARY_KEY <$MIN_DESIRE

值得一提的是,哪些存储记录重复是可以的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。