我试图找出将具有 100 万条以上记录的表中的前 100,000 条记录拆分为 5(五)20,000 条记录块以放入文件中的方法?
也许某些 SQL 会获取 20,000 条记录的每 5 个块的最小和最大 rowid 或主 id,因此我可以将最小和最大值放入变量中并将其传递到 SQL 中,并在 where 子句中使用 BETWEEN 到SQL。
这可以做到吗?
我使用的是 Oracle 11g 数据库。
提前致谢。
如果您只想将值 1-5 分配给大小基本相等的组,则使用ntile()
:
select t.*, ntile(5) over (order by NULL) as num
from (select t.*
from t
where rownum <= 100000
) t;
如果你想插入到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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)