SQL:如何将100,000个记录从Oracle表拆分为5个块?

Sha*_*air 3 sql database oracle max min

我想弄清楚将前100,000条记录从一张有100万条+记录的表分成5(5)条20,000条记录进入文件?也许有些SQL会为每5个20,000块记录获取最小和最大rowid或主id,所以我可以将min和max值放入变量并将其传递给SQL并在where子句中使用BETWEEN SQL.

可以这样做吗?

我在Oracle 11g数据库上.

提前致谢.

Gor*_*off 8

如果您只想将值1-5分配给基本相等的组,请使用ntile():

select t.*, ntile(5) over (order by NULL) as num
from (select t.*
      from t
      where rownum <= 100000
     ) t;
Run Code Online (Sandbox Code Playgroud)

如果要插入5个不同的表,则使用insert all:

insert all
    when num = 1 then into t1
    when num = 2 then into t2
    when num = 3 then into t3
    when num = 4 then into t4
    when num = 5 then into t5
    select t.*, ntile(5) over (order by NULL) as num
    from (select t.*
          from t
          where rownum <= 100000
         ) t;
Run Code Online (Sandbox Code Playgroud)