Как обрезать таблицы при экспорте / импорте в Oracle? - PullRequest
0 голосов
/ 11 февраля 2020

Я экспортирую полные Oracle насосы данных очень часто. Однако есть 3 таблицы, которые имеют тенденцию быть очень большими и иметь (для меня) бесполезные данные.
Я не могу обрезать таблицы до того, как получу дамп, но я также не хочу, чтобы файлы данных были раздутыми. (Эти таблицы могут занимать несколько ГБ)
На данный момент я исключаю эти таблицы при экспорте или импорте:

expdp full=y exclude=table:\"IN \(\'tONE\',\'tTWO\',\'tTHREE\')\" ...

Но тогда я должен воссоздать таблицы позже ...
Это Можно ли экспортировать и / или импортировать данные полностью, кроме тех трех таблиц, где я хочу только определения таблиц, а не их содержание?

Ответы [ 2 ]

2 голосов
/ 11 февраля 2020

Я бы сделал это в два этапа, то есть произвел бы два файла экспорта:

  • один, как вы уже это делаете - таблицы с данными
  • другой с использованием content=METADATA_ONLY expdp параметр
1 голос
/ 11 февраля 2020

Вы можете добавить фильтр данных для каждой из таблиц, данные которых вы хотите исключить, с условием, которое всегда оценивается как ложное:

query='"tONE":"where 1=0","tTWO":"where 1=0","tTHREE":"where 1=0"'

Если вы использовали В файле параметров вам не понадобятся одинарные кавычки:

query="tONE":"where 1=0","tTWO":"where 1=0","tTHREE":"where 1=0"

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

В качестве быстрой демонстрации, экспортируя пару таблиц из схемы HR:

expdp hr/hr full=N tables='countries,departments,jobs' \
  query='countries:"where 1=0",hr."DEPARTMENTS":"WHERE 1=0"'

, в журнале показывается:

. . exported "HR"."JOBS"                                 7.109 KB      19 rows
. . exported "HR"."COUNTRIES"                            5.906 KB       0 rows
. . exported "HR"."DEPARTMENTS"                          6.484 KB       0 rows

В пакетном файле Windows этот формат работал:

query='countries:"where 1=0"','"DEPARTMENTS":"WHERE 1=0"'

... что, вероятно, я должен был показать изначально; так что вам нужно:

query='"tONE":"where 1=0"','"tTWO":"where 1=0"','"tTHREE":"where 1=0"'
...