首页 > 解决方案 > oracle查询批量获取行

问题描述

所以这是我的问题:我需要获取成批的行(选择语句)以迁移到另一个数据库(除 oracle 之外)。

建议的解决方案:我采用批量行(也许使用 rowid?)示例:

batch1: 0-10000, 
batch2: 10000 - 20000,
batchn: 10000(n) - 10000(n+1)

那么我的查询应该是什么?

batch1: select * from table_name where rownum >= 0 and rownum < 10000,
batch2: select * from table_name where rownum >= 10000 and rownum < 20000,
batch n: select * from table_name where rownum >= 10000*n and rownum < 10000*(n+1) 

这不起作用,(只有第一个选择会起作用)。

PS,我从 nodejs 应用程序中提取这些数据,因此我在 for 循环中发送这些批处理查询。

标签: oracle

解决方案


为了说明我的评论:

-- Between rows --
SELECT * FROM 
   ( SELECT deptno, ename, sal, ROW_NUMBER() OVER (ORDER BY ename) Row_Num 
       FROM scott.emp
   )
WHERE Row_Num BETWEEN 5 and 10
/

如有必要,您可以在运算符之间替换为 <= 和 >=。这是我在输出中看到的:

DEPTNO  ENAME   SAL    ROW_NUM
   20   FORD    3000    5
   30   JAMES   950     6
   20   JONES   2975    7
   10   KING    5000    8
   30   MARTIN  1250    9
   10   MILLER  1300    10

推荐阅读