2015-12-21 159 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運行的進口。