Oracle导入呼叫流程
问题描述:
我使用的是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
答
Oracle还提供数据泵的API。您可以编写存储过程来导入数据。作为该存储过程的一部分,您可以先禁用约束,然后使用数据泵API运行的进口。
您可以随时批量自动化这一点,所以你之前运行禁用/启用约束脚本/导入后。 – Rene