Как в ORACLE выполнить экспорт записей из таблицы по запросу?

dbstalker, 04 мая

Передо мной была поставлена задача: сделать дамп нескольких таблиц, но экспортировать таблицы не полностью, а несколько записей выбранных по условию.

Пришлось читать документацию. И вот что довелось узнать.

Начиная с 8 версии ORACLE, для утилиты EXPORT можно использовать параметр QUERY для задания условия аналогичного конструкции where для запросов.

Задание этого параметра дает возможность для экспорта выбрать подмножество записей таблиц. Значение параметра query должно быть строковой константой, содержащей кластер where утверждения select, который будет выполняться для ВСЕХ таблиц указанных в параметре TABLES.

Например, нужно экспортировать из таблицы table1 записи, у которых значение столбца pole1 больше нуля.

exp user/password  tables=(table1) file=proba.dmp 
log=exp_proba.log query='where pole1>0' 

Для выполнения этой команды ORACLE генерирует и выполняет следующий запрос

SELECT * FROM table1 where pole1>1;

Стоит также отметить, что если в параметре tables указано несколько таблиц, то условие, указанное в query применяется ко всем таблицам, указанным в конструкции tables. Например:

exp user/password  tables=(table1,table2) file=proba.dmp 
log=exp_proba.log query='where pole1>0'

Для выполнения приведенной команды генерируются запросы:

SELECT * FROM table1 where pole1>1;
SELECT * FROM table2 where pole1>1;

Если таблица не содержит указанных в конструкции query колонок, то будет сгенерировано сообщение об ошибке и ни одна запись этой таблицы выбрана не будет.

Замечания по поводу параметра QUERY

  • Параметр QUERY не может быть указан для полного экспорта, экспорта схемы, для режима переноса табличных пространств.
  • Параметр QUERY должен быть применим для всех указанных в команде таблиц.
  • Параметр QUERY не применим, если указываете (DIRECT=Y)

Для юниксоподобных операционных систем утилита с конструкцией query вызывается так:

exp scott/tiger tables=emp query=\"where deptno=10\"

ОднаКнопка

2 комментария

Прокоментировать

Dmitriy
28 июня 2009 г. в 22:20

А как экспортировать отдельные колонки таблицы?

dbstalker
30 июня 2009 г. в 12:04

используйте утилиту Data Pump Export

 

Новый комментарий

Я не спамер: введите суму 4+0



 

От авторов блога

О Блоге - прочитай перед началом.

Задать вопрос и получить ответ - уже решено 94 вопросов

Глоссарий - список терминов и сокращений


 
 

Бизнес форум

Последние темы:

Шины бу
26 апреля, 2 ответа
Потрібна порада
25 апреля, 2 ответа
Посоветуйте адвоката
25 апреля, 1 ответа