如何在 EXPDP 中使用查询子句

How to use query clause in EXPDP

我正在使用以下命令通过 EXPDP 导出 table 的数据

nohup expdp \"/ as sysdba\" directory=DATA_PUMP_DIR dumpfile=EXP.dmp logfile=EXP.log version=11.2.0.4 TABLES=CRM.CATEGORIES QUERY='"where bank_id='43'"'

出现以下错误

ORA-31693: Table data object "CRM"."CATEGORIES" failed to load/unload and is being skipped due to error:

ORA-29913: error in executing ODCIEXTTABLEPOPULATE callout

ORA-01722: invalid number

如果我从导出命令中删除查询参数,它就可以正常工作。我尝试将版本参数更改为不同的值,但仍然出现相同的错误 table 中的 BANK_ID 列是 NVARCHAR2 数据类型。 我不能使用 EXP,因为它在数据库上被阻止了。源数据库和目标数据库的 Oracle 版本均为 12.1.0.2.0。

您能否尝试以这种方式更改您的查询过滤器:

QUERY=(CRM.CATEGORIES:"WHERE bank_id='43'")

请注意 :

编辑 我设法让它以这种方式工作:

expdp \"/ as sysdba\" dumpfile=DATA_PUMP_DIR:test.dmp tableS=CRM.CATEGORIES QUERY='(CRM.CATEGORIES:"WHERE bank_id=43")'   logfile=DATA_PUMP_DIR:test.log

使用par文件,更简单

... 查询="where bank_id=43"

干杯 布莱恩

这在 Solaris 中对我有用(查询参数中使用的日期值)

expdp xxxxx/xxxx dumpfile=test_table.dmp logfile=test_table.log tables=scott.TEST directory=DUMDIR query=scott.TEST:\"where IMG_SAVE_DTTIM \<\ \'01-\JAN-\'\"

更多信息Refer.Doc ID 277010.1