oracle DBMS_DATAPUMP API从不同模式导出/导入表

pdsfdshx  于 2023-10-16  发布在  Oracle
关注(0)|答案(2)|浏览(109)

我想使用DBMS_DATAPUMP API从多个模式导出导入表。例如user1.table1 user2.table2 user3.table3我给予一个参数,这些表就像一个用逗号分隔的列表。'user1.table1,user2.table2,user3.table3'之后,我将表的列表存储在表中。然后,我在游标中读取表的内容,并在游标中使用LOOP遍历,然后给予模式和表名。

LOOP
 dbms_datapump.metadata_filter(handle => h1, name => 'NAME_EXPR', value => 'IN('table1'));
 dbms_datapump.metadata_filter(handle => h1, name => 'SCHEMA_LIST', value => 'IN('user1'));
END LOOP.

第一个表已成功添加到dbms_datapump作业,但第二个表退出时出错。
ORA-39071:SCHEMA_LIST的值格式不正确。ORA-00936:缺失扩张
我试图找到解决方案,如何从不同的模式中使用DBMS_DATAPUMP API表进行exp/imp,但我找到了任何示例。我找到的例子只显示了你是否是来自一个模式的exp/imp。Thanks in advance

nwo49xxi

nwo49xxi1#

--对于表模式,仅支持单个SCHEMA_EXPR过滤器。如果指定了,它只能指定一个模式(例如'IN (''SCOTT'')')。

DBMS_DATAPUMP.METADATA_FILTER(handle, 'SCHEMA_EXPR', 'IN('||vschemas||')');

--可以输入多个表名,但不能超过4000个字符(文字限制),包括特殊字符。

DBMS_DATAPUMP.METADATA_FILTER(handle, 'NAME_EXPR', 'IN('||vtables||')', 'TABLE');
cedebl8k

cedebl8k2#

对SCHEMA_EXPR使用变量的语法无效。"'SCHEMA_EXPR','IN('|| vschemas|| ')');"

相关问题