我想使用JDBC从Oracle数据库中恢复数据 块。与MySQL和其他数据库相比,ORacle不容易实现 仅从查询中恢复行的子集。有什么建议吗?
应该可以使用Java 8 API来流式传输JDBC。
我尝试使用分页实现。但是,分页总是下载所有 将结果放入结果集中,唯一可以避免的是映射。
我想以1&000; 000&000; 000的大块检索200&000; 000&000; 000的记录。
答案 0 :(得分:2)
我认为你的问题有两个问题。 1.如何处理非常大的结果集(在Oracle中)。 2.如何进行分页(在Oracle中)。
Oracle支持服务器端游标,因此当它非常大时,您不需要对结果集进行分页。只需选择所需的一切,并为JDBC驱动程序指定1 000 000的FET SIZE。
如果您真的想要使用Oracle的分页(这是另一个问题)
您可以使用嵌套的select语句和逐行编号。首先,你选择你想要的。
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;