使用 expdp 导出大量表



我的环境有4000多个表。我只想导出 2000 个表。 我尝试使用包含子句使用par文件。但出口正在失败。 详情如下

工具: EXPDP |甲骨文数据库版本:11g R2 |要导出的表数:2000

使用的代码:

directory=pump
dumpfile=EXP_FULL_GOLD.dmp
logfile=EXP_FULL_GOLD.log
COMPRESSION=ALL
schemas=GOLD
include=TABLE:"IN('T1','T2','T3','T4'..'T2000')

错误: 使用分区、OLAP、数据挖掘和实际应用程序测试选项 ORA-39001:参数值无效 ORA-39071:包含的值格式不正确。 ORA-00920:无效的关系运算符

即使我尝试了以下代码:

directory=pump 
dumpfile=EXP_FULL_GOLD.dmp 
logfile=EXP_FULL_GOLD.log 
COMPRESSION=ALL 
schemas=Gold
content=DATA_ONLY
INCLUDE=TABLE:"IN (SELECT tname FROM Gold.t11)"

此处 T11 包含存储在列 tname 中的表列表(2000 条记录(。

但同样的错误会发生。 请帮忙,因为我在网上搜索了很多,但我找不到任何解决方案。 即使对于包含子句允许的表数限制在任何地方都不可用。已尝试使用900个表,但失败并出现相同的错误。

问候

苏吉特

找到了解决方案:

SCHEMAS=GOLD
DIRECTORY=DEBUG
COMPRESSION=ALL
CONTENT=DATA_ONLY
DUMPFILE=EXP_GOLD_26Jul2017.dmp
LOGFILE=EXP_GOLD_26Jul2017.log
INCLUDE=TABLE:"IN(SELECT TNAME FROM GOLD.T11)"   

谢谢。

文档描述,INCLUDE参数的name_clause

是一个 SQL 表达式,用作对象名称的过滤器...

这意味着通过使用 IN 列表,您将受到列表中 1000 个元素的一般限制的约束。

更糟糕的是,此链接表明name_clause的长度限制为 4000 个字符。 超过它,你会得到UDE-00014 invalid value for parameter INCLUDE

但是解决方法很容易(如上面的链接所示(

1( 使用参数文件 - 请参阅参数PARFILE- 以 aviod 可能的转义问题

2( 将(不带引号的(表名放在帮助表中,并使用以下参数

INCLUDE=TABLE:"IN (select table_name from TAB_LIST)"

您可以使用包含要使用表模式导入的表列表的 parfile 从完全导出中仅导入所需的表:-

directory=pump 
dumpfile=EXP_FULL_GOLD.dmp 
logfile=EXP_FULL_GOLD.log
transform=storage:n
exclude=statistics
tables=(
gold.t1,
gold.t2,
gold.t3,
gold.t4,
gold.t2000)

(添加所需的所有表(。

如果黄金架构当前不存在,则需要预先创建黄金架构。如果您希望使用 exclude=table 跳过所有表,则可以使用架构模式导入来执行此操作。

相关内容

  • 没有找到相关文章

最新更新