【问题标题】:DBMS_DATAPUMP API export/import tables from different schemasDBMS_DATAPUMP API 从不同模式导出/导入表
【发布时间】:2022-08-20 09:54:17
【问题描述】:

我想使用 DBMS_DATAPUMP API 从多个模式中导出导入表。 EG 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。 提前致谢

  • 你实际上在执行什么?您发布的代码在语法上不正确。只需查看 \') 字符即可。从用户创建开始的 MCV 示例不应花费很长时间来创建,也不应在您的问题中占用太多垂直空间。

标签: oracle plsql datapump


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-12
    • 2015-05-19
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多