2015-12-21 71 views
0

我使用的是Oracle 11g数据库和我所用,因为有数据,由于外键约束恢复数据库时执行导入数据泵命令impdp之前运行下面的脚本。Oracle导入呼叫流程

SET SERVEROUTPUT ON; 
declare 

begin 

for c1 in (select table_name, constraint_name from user_constraints) loop 
    begin 
     execute immediate ('alter table '||c1.table_name||' disable constraint '||c1.constraint_name); 
    end; 
end loop; 

for t1 in (select table_name from user_tables) loop 
    begin 
     dbms_ouput.put_line(t1.table_name); 
     execute immediate ('truncate table '||t1.table_name); 
    end; 
end loop; 

我的问题是,有没有什么办法来自动执行此手动过程,以便每当我执行导入数据泵脚本,存储过程/函数会先执行呢?

例如:

$ORACLE_HOME/bin/impdp ..... TABLE_EXISTS_ACTION=TRUNCATE .... ACTION_FIRST=STOREDPROC_CLEANUP_FIRST 
+1

您可以随时批量自动化这一点,所以你之前运行禁用/启用约束脚本/导入后。 – Rene

回答

0

Oracle还提供数据泵的API。您可以编写存储过程来导入数据。作为该存储过程的一部分,您可以先禁用约束,然后使用数据泵API运行的进口。