Oracle 数据泵 API
Oracle Datapump API
我正在重写一个导入和导出 oracle 数据库的应用程序。我正在使用 imp.exe 和 exp.exe 作为代码中的进程执行。现在我正在尝试使用 impdp 和 expdp 来代替它们。我在 https://docs.oracle.com/ 研究了一些样本,但是下面的代码在 DBMS_DATAPUMP.ADD_FILE.
失败了
DECLARE
h2 NUMBER;
BEGIN
h2 := DBMS_DATAPUMP.OPEN('EXPORT','SCHEMA',NULL, 'MYJOB', 'LATEST');
DBMS_DATAPUMP.ADD_FILE(h2,'test1.dmp','datapump_dir');
DBMS_DATAPUMP.METADATA_FILTER(h2,'SCHEMA_EXP','IN (''sc900'')');
DBMS_DATAPUMP.START_JOB(h2);
dbms_datapump.detach(h2);
END;
错误输出为
ORA-39001: invalid argument value
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "SYS.DBMS_DATAPUMP", line 3507
ORA-06512: at "SYS.DBMS_DATAPUMP", line 3756
我已连接 'sys' 并且 'datapump_dir' 创建语句已成功执行。
我做错了什么?提前致谢!
如果有人感兴趣,我找到了问题的原因。出于某种原因,它不起作用,即使我指定了默认目录。但是,当我将 null 传递给此参数时,它起作用了。以下代码有效,唯一的缺点是我只能保存到默认目录
DECLARE
h2 NUMBER;
BEGIN
h2 := DBMS_DATAPUMP.OPEN('EXPORT', 'SCHEMA');
DBMS_DATAPUMP.ADD_FILE(h2, 'example0.dmp', null);
DBMS_DATAPUMP.METADATA_FILTER(h2,'SCHEMA_EXPR', q'{IN ('SC900')}');
DBMS_DATAPUMP.START_JOB(h2);
DBMS_DATAPUMP.DETACH(h2);
END;
/
我正在重写一个导入和导出 oracle 数据库的应用程序。我正在使用 imp.exe 和 exp.exe 作为代码中的进程执行。现在我正在尝试使用 impdp 和 expdp 来代替它们。我在 https://docs.oracle.com/ 研究了一些样本,但是下面的代码在 DBMS_DATAPUMP.ADD_FILE.
失败了DECLARE
h2 NUMBER;
BEGIN
h2 := DBMS_DATAPUMP.OPEN('EXPORT','SCHEMA',NULL, 'MYJOB', 'LATEST');
DBMS_DATAPUMP.ADD_FILE(h2,'test1.dmp','datapump_dir');
DBMS_DATAPUMP.METADATA_FILTER(h2,'SCHEMA_EXP','IN (''sc900'')');
DBMS_DATAPUMP.START_JOB(h2);
dbms_datapump.detach(h2);
END;
错误输出为
ORA-39001: invalid argument value
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "SYS.DBMS_DATAPUMP", line 3507
ORA-06512: at "SYS.DBMS_DATAPUMP", line 3756
我已连接 'sys' 并且 'datapump_dir' 创建语句已成功执行。
我做错了什么?提前致谢!
如果有人感兴趣,我找到了问题的原因。出于某种原因,它不起作用,即使我指定了默认目录。但是,当我将 null 传递给此参数时,它起作用了。以下代码有效,唯一的缺点是我只能保存到默认目录
DECLARE
h2 NUMBER;
BEGIN
h2 := DBMS_DATAPUMP.OPEN('EXPORT', 'SCHEMA');
DBMS_DATAPUMP.ADD_FILE(h2, 'example0.dmp', null);
DBMS_DATAPUMP.METADATA_FILTER(h2,'SCHEMA_EXPR', q'{IN ('SC900')}');
DBMS_DATAPUMP.START_JOB(h2);
DBMS_DATAPUMP.DETACH(h2);
END;
/