![使用 oracle imp 跳过一个表的插入](https://linux22.com/image/493249/%E4%BD%BF%E7%94%A8%20oracle%20imp%20%E8%B7%B3%E8%BF%87%E4%B8%80%E4%B8%AA%E8%A1%A8%E7%9A%84%E6%8F%92%E5%85%A5.png)
我正在做一个 oracle imp,在转储中有一个大表,我只想创建它,但不想在其中插入行。
这可能吗 ?
Exp 是在 10.2.0.4 上完成的。我正在 XE (10.2.0.1) 上进行 imp。
答案1
您使用的是经典的导出和导入实用程序吗?还是新的 DataPump 版本?从您提到的“exp”和“imp”,而不是“expdp”和“impdp”,我推测您使用的是经典版本,而不是 DataPump 版本。如果是这样,那您的选择就会大大减少。
在传统的导出和导入实用程序中,ROWS=N 参数适用于所有表。因此,没有单个命令行用于“将所有数据导入除一个表之外的所有表”。但是,您可以执行一系列导入
- 第一次导入时使用 ROWS=N,以便导入所有表的结构但不导入任何数据。
<<list of all other tables>>
使用 ROWS=Y 和 TABLES=( )进行第二次导入
DBA_TABLES
由于您已经完成了第一次导入,因此您只需查询(或ALL_TABLES
或USER_TABLES
)数据字典视图即可生成第二次导入的表列表。
答案2
当然如此。
“imp” 有一个“ROWS”参数用于此目的。如果您在命令行中设置 ROWS=N,导入将跳过数据插入。
编辑:它将跳过所有表的行。如果您只想跳过一个表的行,我认为您必须分两个不同的步骤进行导入。一个步骤仅用于导入此特定表,另一个步骤用于导入其他表。