从oracle 10g中的impdp恢复一个表的步骤

时间:2017-09-27 07:17:23

标签: oracle oracle10g

我只需要将一个表从完整备份(expdp)导入到同一数据库中的新创建表。

我可以直接用新名称导入表吗?或者我必须先创建一个具有相同参数的新表然后导入?

impdp hr DIRECTORY=dpump_dir1 DUMPFILE=expschema.dmp TABLES=hr.employees REMAP_TABLE=hr.employees:emps 

另一个问题是remap_table会影响我已经存在的员工表吗?或者它只会创建一个名为emps的新表,并将员工的数据从转储导入到它?

......................更新......................

我发现oracle 10g中没有remap_table,所以我可以使用这个方法:

create user johny identified by 1234;
grant create session to johny;
impdp  system/****** DIRECTORY=dpump_dir1   DUMPFILE=expschema.dmp  LOGFILE= tb_imp.log  TABLES='HR.employees'  REMAP_SCHEMA=HR: johny;

我们暂时只需要这张桌子,所以我可以稍后放弃johny。上述方法也不会影响hr模式中的原始employees表,对吗?

1 个答案:

答案 0 :(得分:0)

Oracle将从您的转储文件中导入表员工并将其重新存储到emps,如果存在员工表,则不会受到影响,如果emps表已经存在则不会执行任何操作。 通过使用table_exists_action参数指定:

,可以在表存在时更改行为
  • TRUNCATE =>如果存在则截断表并从中导入数据 dump
  • REPLACE =>将首先用定义替换表    从转储然后导入数据
  • APPEND =>将附加    表中的数据,将现有数据保留在。