0

我使用的是 Oracle 11g 数据库,并且我曾经在执行导入数据泵命令之前运行以下脚本,impdp因为在恢复数据库时由于外键存在数据限制。

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
4

1 回答 1

0

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

于 2015-12-21T10:06:37.493 回答