【发布时间】:2021-07-08 04:39:19
【问题描述】:
我正在使用 Oracle XE 11g 的 impdp,尝试从数据泵文件 (*.dmp) 导入表的特定范围(以 rownum 为单位)。
在基本的 Oracle 查询中,我们可以使用以下查询读取 rownum 范围 (my_start
SELECT * from (
SELECT t.*, ROWNUM r
from my_table t
) WHERE r >= my_start AND r < my_end
通过其中的嵌套查询。
但是,在 impdp 的 parfile 中编写查询时,我发现查询只能包含 where 子句。所以,我们不能导入具体的rownum范围的数据。
我想问以下问题。
- 有没有办法在 impdp 查询中使用嵌套的 select 子句?
- 如果没有,有没有其他方法可以导入特定 rownum 范围的数据?
感谢您阅读我的问题。
【问题讨论】:
-
使用这样的子查询只有在
order by上才有意义。您正在尝试获得一个具有下限和上限的范围,但即使只有链接问题 (WHERE rownum <= 100) 中的上限,您也会得到不确定的行。只要您不在乎获得哪 100 行,该版本就很有意义。但是通过排序,您实际上是在要求数据泵实现整个表的内存排序,这似乎不合理。 为什么你想这样做?您是否尝试导入整个表但分块 - 如果是这样,为什么?还是别的什么? -
@AlexPoole 最后,我试图将超过 100GB 的表从数据泵文件导入到限制为 11GB 的 Oracle XE 中。因此,我决定安装多个 Oracle XE(docker 容器),将表拆分为 10GB 的部分并分别导入。 ROWNUM 是最简单的拆分标准,所以我使用它。有没有更好的拆分表格的方法?
标签: oracle