使用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 (将#修改为@)