Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Oracle数据泵导出中排除某些表_Oracle_Oracle11g_Datapump_Expdp - Fatal编程技术网

如何从Oracle数据泵导出中排除某些表

如何从Oracle数据泵导出中排除某些表,oracle,oracle11g,datapump,expdp,Oracle,Oracle11g,Datapump,Expdp,我的Oracle数据库中有大量用户模式。我希望导出这些模式的表数据,但不包括使用第二个字符下划线命名的任何表 例如,我希望导出表TPI_SUMMARY,DFXRRT和RTAFF,但排除C_名称,G_熊等。基本上,我只想排除以下划线作为第二个字符的任何内容 我正在使用Oracle数据泵: expdp system/xxxxx@string parfile=parfile.par parfile包含: INCLUDE=TABLE:"IN(select table_name from dba_tab

我的Oracle数据库中有大量用户模式。我希望导出这些模式的表数据,但不包括使用第二个字符下划线命名的任何表

例如,我希望导出表
TPI_SUMMARY
DFXRRT
RTAFF
,但排除
C_名称
G_熊
等。基本上,我只想排除以下划线作为第二个字符的任何内容

我正在使用Oracle数据泵:

expdp system/xxxxx@string parfile=parfile.par
parfile
包含:

INCLUDE=TABLE:"IN(select table_name from dba_tables where table_name not like '_\_%')" 
EXCLUDE=SCHEMA:"='SYS','SYSTEM','SYSMAN','DBSNMP','OUTLN','APPQOSSYS'"
DIRECTORY=paul_test 
DUMPFILE=infrep_temp1.dmp 
FULL=Y 
LOGFILE=Daily_Backup_infrep_temp1.log
我就是不能让它工作。我认为
EXCLUDE
位是可以的,但是
INCLUDE
查询是错误的。
目录
转储文件
日志文件
都正常

我得到以下信息:

Export: Release 11.2.0.4.0 - Production on Thu May 4 16:41:48 2017  

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.  

Connected to: Oracle Database 11g Release 11.2.0.4.0 - 64bit Production  
ORA-39001: invalid argument value  
ORA-39071: Value for EXCLUDE is badly formed.  
ORA-00933: SQL command not properly ended  

有什么想法吗?我真的很难让它工作。

错误指的是
排除
,而不是
包括

EXCLUDE=TABLE:"NOT IN(select table_name from dba_tables where table_name not like '_\_%')" 
EXCLUDE=SCHEMA:"IN('SYS','SYSTEM','SYSMAN','DBSNMP','OUTLN','APPQOSSYS')"
。。。这确实是错误的。您试图使用具有多个值的相等;您只需再次在()中使用

EXCLUDE=SCHEMA:"IN('SYS','SYSTEM','SYSMAN','DBSNMP','OUTLN','APPQOSSYS')"
但是:

EXCLUDE
INCLUDE
参数是互斥的

但是,您可以使用两个
EXCLUDE
子句,因此可以否定第一个
INCLUDE

EXCLUDE=TABLE:"NOT IN(select table_name from dba_tables where table_name not like '_\_%')" 
EXCLUDE=SCHEMA:"IN('SYS','SYSTEM','SYSMAN','DBSNMP','OUTLN','APPQOSSYS')"
或者现在是双重否定:

EXCLUDE=TABLE:"IN(select table_name from dba_tables where table_name like '_\_%')" 
EXCLUDE=SCHEMA:"IN('SYS','SYSTEM','SYSMAN','DBSNMP','OUTLN','APPQOSSYS')"
但是像这样的
并不像你期望的那样匹配;您需要添加一个
escape
子句,在此上下文中,您需要通过将反斜杠加倍来对其进行转义:

EXCLUDE=TABLE:"IN(select table_name from dba_tables where table_name like '_\_%' escape '\\')" 
或者您可以使用
substr()

EXCLUDE=TABLE:"IN(select table_name from dba_tables where substr(table_name, 2, 1) = '_')"
如果您有自己想要的模式列表,也可以使用两个
INCLUDE
子句,这可能比列出所有内置模式更简单,因为它们可能会有所不同