Импорт выборочных данных с использованием impdp

StackOverflow https://stackoverflow.com/questions/686297

  •  22-08-2019
  •  | 
  •  

Вопрос

У меня есть целая база данных, которую я должен импортировать в виде дампа в свою собственную.Я хочу исключить данные из определенных таблиц (в основном потому, что они огромны по размеру и бесполезны).Я не могу полностью исключить эти таблицы, поскольку мне нужен объект table как таковой (за вычетом данных), и мне придется заново создать их в моей схеме, если я это сделаю.Также при отсутствии этих табличных объектов различные другие внешние ограничения, определенные в других таблицах, также не смогут быть импортированы и должны быть переопределены.Поэтому мне нужно исключить только данные из определенных таблиц.Однако мне нужны данные из всех других таблиц.

Существует ли набор параметров для impdp, которые могут помочь мне сделать это?

Это было полезно?

Решение

Обязательно сделайте 2 пробега.Один для создания всех табличных объектов, но вместо использования таблиц во втором запуске impdp используйте исключение

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"'

см . : community.oracle.com

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top