微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用数据泵导出时无法重新映射数据

如何解决使用数据泵导出时无法重新映射数据

谁能帮助我导出数据泵。我尝试了很多组合。但是,我总是得到:

ORA-39001: invalid argument value
ORA-06512: at "SYS.DBMS_SYS_ERROR",line 79
ORA-06512: at "SYS.DBMS_DATAPUMP",line 4932
ORA-06512: at "SYS.DBMS_DATAPUMP",line 5768
ORA-06512: at line 38

对此有什么建议吗?

CREATE TABLE foo
(
  bar VARCHAR2(10)
);

INSERT INTO FOO VALUES('hello');
INSERT INTO FOO VALUES('world');
COMMIT;


create or replace package pkg
 is
  function tst(p_val varchar2) return varchar2;
end pkg;
/

create or replace package body pkg
 as
function tst(p_val varchar2) return varchar2 is
begin
 return p_val;
end;
end pkg;
/



DECLARE 
  h1 NUMBER;
  l_status varchar2(200);
BEGIN

    h1 := DBMS_DATAPUMP.OPEN(
      operation => 'EXPORT',job_mode => 'TABLE',remote_link => NULL,job_name => 'exp_1',version => 'LATEST'
    );

    DBMS_DATAPUMP.ADD_FILE(
      handle => h1,filename => 'export.dmp',reusefile => 1,directory => 'DBOUT',filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_DUMP_FILE);
      
    DBMS_DATAPUMP.ADD_FILE(
      handle => h1,filename => 'export.log',filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE
    );

    DBMS_DATAPUMP.MetaDATA_FILTER(
      handle => h1,name => 'NAME_EXPR',value => 'IN (SELECT table_name FROM user_tables WHERE table_name LIKE ''FOO%'')',object_type => 'TABLE'
    );

    DBMS_DATAPUMP.DATA_REMAP(
      handle => h1,name => 'COLUMN_FUNCTION',table_name => 'FOO',column => 'BAR',function => 'pkg.tst'
    );

    
   DBMS_DATAPUMP.start_job(h1);
   DBMS_DATAPUMP.wait_for_job(h1,l_status);
   dbms_output.put_line( l_status );

END;
/

关于文档,它应该可以工作。没有?

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/arpls/DBMS_DATAPUMP.html#GUID-2C61513F-9040-4CE3-8C22-ED1FA5FF81DD

欢迎任何建议,

问候,

解决方法

FUNCTION 参数必须是正确的大小写,并且必须包含 SCHEMA 参数并且也必须是正确的大小写。此过程调用对我有用:

DBMS_DATAPUMP.DATA_REMAP(
  handle => h1,name => 'COLUMN_FUNCTION',table_name => 'FOO',column => 'BAR',function => 'PKG.TST',schema => user
);

文档中没有提到这些限制,所以我会说你的原始代码是正确的,这种行为是一个错误。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?