impdp关于tables和remap_tables的一些注意事项
(1)expdp时写上tables=(表)表示导出某些表;impdp时不写tables条件表示导入dumpfile中的所有表,impdp时写tables=(表)条件表示只导入指定的表,当然如果tables=(dumpfile中的所有表)也就是导入dumpfile中的所有表;且如果用system执行impdp时则tables=(表)时必须加上schema.表名,否则会默认是为system下面的表,会导致报错.。
(2)remap_table如果在同一个schema下进行,虽然不要加remap_schema,但是remap_table冒号前面的表名一定要带schema信息,冒号后面的表名一定不能带schema信息。
(3)remap_table如果在不同schema的情况下进行,如user1.A1转换成user2.B1,user1.A2转换成user2.B1,必须加remap_schema,且remap_table冒号前面的表名一定要带schema信息,冒号后面的表名一定不能带schema信息。
案例:
导出指定schema的一个表,导入到一个新的schema下并重命名
--在源库中导出指定schema的一个表的数据
expdp system/oracle directory=EXPDUMP dumpfile=expdp_scott.dmp logfile=expdp_scott.log TABLES=hr.t1;
--通过scp或其他方式传到目标库
--将导出文件导入到一个新的schema下,并更改成新的表空间
impdp system/oracle directory=DP_DIR dumpfile=expdp_scott.dmp logfile=expdp_scott.log remap_schema=hr:SCOTT REMAP_TABLESPACE=TBSHR:TBSSCOTT
--将导出文件导入到一个新的schema下重命名表名,并更改成新的表空间
impdp system/oracle directory=DP_DIR dumpfile=expdp_scott.dmp logfile= expdp_scott.log remap_schema=hr:SCOTT REMAP_TABLESPACE=TBSHR:TBSSCOTT REMAP_TABLE=hr.t1:t2