java - 如何从java中分批从oracle中获取数据
问题描述
我有一张桌子-
emp_record
其中有 40,000 条记录我想从 java 代码中获取记录,以下是要求 -
- 一次只应返回 1000 条记录
- 在下一个命中接下来的 1000 条记录
- 继续直到所有记录用完
- SQL 查询不应嵌套,例如
select *
from(
SELECT a.*,rownum rn
FROM distributor a)
WHERE rn >= 3000 and rn < 4000;
非常感谢任何形式的帮助。
解决方案
这听起来很不自然,因为 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 结构做同样的事情,但语法要好得多。
推荐阅读
- python-3.x - CFFI:是否有可能捕获警告?
- javascript - Javascript ES6 语法单选按钮检查
- nginx - 我无法使用 nginx-reverse-proxy 正确重定向
- typescript - 有没有办法在 Typescript 中访问 firebase 函数返回?
- python-3.x - Odoo14:将 Many2many 与 Many2one 联系起来
- python - Scikit Learn 中的分类朴素贝叶斯给出了 IndexError
- php - PHP password_hash 导致问题
- django - Django - 如何在视图的 GET 方法部分访问 POST 数据而不将数据保存在数据库中?
- tsql - 将文本时间转换为 DateTime 从时间中删除前导 0
- android - 有没有办法对齐 LazyColumn 底部的项目?