我将整个数据库作为转储导入到我自己的数据库中。我想从某些表中排除数据(主要是因为它们的大小很大而且没用)。我不能完全排除那些表,因为我需要表对象本身(减去数据),如果我这样做,将不得不在我的模式中重新创建它们。在没有这些表对象的情况下,在其他表上定义的各种其他外部约束也将无法导入,需要重新定义。所以我只需要从某些表中排除数据。我想要所有其他表中的数据。
是否有一组impdp参数可以帮助我这样做?
答案 0 :(得分:9)
我会在它上面进行两次运行:第一次我只导入元数据:
impdp ... CONTENT=METADATA_ONLY
第二个将仅包含我感兴趣的表的数据:
impdp ... CONTENT=DATA_ONLY TABLES=table1,table2...
答案 1 :(得分:8)
绝对可以进行2次跑步。一个用于创建所有表对象,但不使用第二个impdp运行中的表,而是使用排除
impdp ... Content=data_only exclude=TABLE:"IN ('table1', 'table2')"
另一种方式可行,但这样你只需要列出你不想要的表格而不是你想要的所有表格。
答案 2 :(得分:1)
语法:
EXCLUDE=[object_type]:[name_clause],[object_type]:[name_clause]
INCLUDE=[object_type]:[name_clause],[object_type]:[name_clause]
运营商使用示例:
EXCLUDE=SEQUENCE
or EXCLUDE=TABLE:"IN ('EMP','DEPT')"
or EXCLUDE=INDEX:"= 'MY_INDX'"
or INCLUDE=PROCEDURE:"LIKE 'MY_PROC_%'"
or INCLUDE=TABLE:"> 'E'"
参数也可以存储在参数文件中,例如:exp.par
DIRECTORY = my_dir
DUMPFILE = exp_tab.dmp
LOGFILE = exp_tab.log
SCHEMAS = scott
INCLUDE = TABLE:"IN ('EMP', 'DEPT')"
答案 3 :(得分:1)
如果导出导入表的大小很大,您可以使用" SAMPLE" expdp命令中的参数,用于导出表所需的百分比....
$ expdp tables=T100test DIRECTORY=expimp1 DUMPFILE=test12.dmp SAMPLE = 10;
此命令仅导出T100test表数据的10%数据。
答案 4 :(得分:0)