Импорта выборочных данных с помощью impdp
У меня есть целая БД для импорта в качестве дампа в мой собственный. Я хочу исключить данные из определенных таблиц (в основном потому, что они огромны по размеру и не полезны). Я не могу полностью исключить эти таблицы, так как мне нужен объект таблицы как таковой(минус данные), и мне придется повторно создать их в моей схеме, если я это сделаю. Также в отсутствие этих объектов таблицы различные другие внешние ограничения, определенные в других таблицах, также не будут импортированы и должны быть переопределены.Так что мне нужно ... исключить только данные из определенных таблиц.Мне нужны данные из всех других таблиц.
есть ли набор параметров для impdp, которые могут мне помочь?
5 ответов
определенно сделайте 2 прогона. Один для создания всех объектов таблицы, но вместо использования таблиц во втором запуске impdp используйте exclude
impdp ... Content=data_only exclude=TABLE:"IN ('table1', 'table2')"
другой способ работает, но таким образом вам нужно только перечислить таблицы, которые вы не хотите, по сравнению со всем, что вы хотите.
Я бы сделал два запуска на нем: первый я бы импортировал только метаданные:
impdp ... CONTENT=METADATA_ONLY
второй будет включать данные только для таблиц, которые меня интересовали:
impdp ... CONTENT=DATA_ONLY TABLES=table1,table2...
Если размер таблицы велик для импорта экспорта, вы можете использовать параметр "SAMPLE" в команде expdp, чтобы экспортировать таблицу за тот процент, который вы хотите ....
$ expdp tables=T100test DIRECTORY=expimp1 DUMPFILE=test12.dmp SAMPLE = 10;
эта команда экспортирует только 10% данных таблицы t100test.
синтаксис:
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')"
Кажется, вы можете исключить непосредственно при импорте с помощью параметра запроса impdp
impdp [...] QUERY='TABLE_NAME:"WHERE rownum = 0"'