首页 > 解决方案 > 如何从java中分批从oracle中获取数据

问题描述

我有一张桌子-

emp_record

其中有 40,000 条记录我想从 java 代码中获取记录,以下是要求 -

  1. 一次只应返回 1000 条记录
  2. 在下一个命中接下来的 1000 条记录
  3. 继续直到所有记录用完
  4. SQL 查询不应嵌套,例如

 select *
 from(
 SELECT a.*,rownum rn 
 FROM distributor  a)
 WHERE rn  >= 3000 and rn < 4000; 

非常感谢任何形式的帮助。

标签: javasqloracle

解决方案


这听起来很不自然,因为 40.000 条记录不算什么。我只会在一个查询中阅读它们,也许会分批分发它们。在这种情况下,您可以使用statement.setFetchSize(1000)JDBC 驱动程序一次获取 1000 条记录并将其定位为解决需求。

或者,如果您使用的是 Oracle 12,您可以使用:

select * from distributor
order by something_unique
offset x rows fetch next 1000 rows only

其中 x 是起始位置。它与 rownum 结构做同样的事情,但语法要好得多。


推荐阅读