近日有需求需要在数据库导出大量表数据,首先就想到expdp数据泵导出,导出的表则用include标签进行罗列。由于表比较多,一执行便直接报错:如下

找了半天原因,原来include标签内的字符不能太长;
同时根据inlcue的特性找到一个解决方法:
将需要导出的表插入到一个只有表名字段的数据对象中,例:
--创建数据对象
CREATE TABLE Tables_inclde (
tablesneme VARCHAR2(80)
);--数据插入
INSERT INTO Tables_inclde(tablesneme) values('XXX1');
INSERT INTO Tables_inclde(tablesneme) values('XXX2');
......
INSERT INTO Tables_inclde(tablesneme) values('XXX5000');
导出语句中的include标签则用:
expdp user/password schemas=data DIRECTORY=DMPS dumpfile=20230615.dmp logfile=20230615.log
compression=all content=DATA_ONLY INCLUDE=TABLE:\"IN\(SELECT tablesneme FROM Tables_inclde\)\"