Импорта выборочных данных с помощью 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"'

cf:community.oracle.com