Вы не сможете запустить экспорт с помощью этой команды.Утилита экспорта Data Pump (EXPDP) не использует обычные SQL
.Вы не можете использовать сокращенные команды SQL
в предложениях - они должны быть определены в соответствии с документацией Oracle.В соответствии с документацией пример предложения схемы EXPDP выглядит следующим образом:
expdp hr DIRECTORY=dpump_dir1 DUMPFILE=expdat.dmp SCHEMAS=hr,sh,oe
Они имеют схемы, перечисленные в виде значений, разделенных запятыми, и выпридется сделать что-то подобное, чтобы выполнить экспорт.Вместо того чтобы пытаться использовать запрос в самой команде, вы можете создать запрос, который будет возвращать все эти схемы в формате через запятую, и просто скопировать и вставить этот список в команду.
Чтобы получить этот список, вы можете попробовать выполнить следующий запрос:
select listagg(username,', ') within group(order by username) csv
from all_users
where username like 'IAS%';
В этом запросе используется listagg
функция .Если вы используете версию Oracle, которая не поддерживает listagg
, вы можете использовать следующий запрос, чтобы выполнить то же самое.Я нашел этот запрос в отдельном вопросе StackOverflow , но он должен работать просто отлично:
SELECT SUBSTR (SYS_CONNECT_BY_PATH (username , ','), 2) csv
FROM (SELECT username , ROW_NUMBER () OVER (ORDER BY username ) rn,
COUNT (*) OVER () cnt
FROM all_users where username like 'IAS%')
WHERE rn = cnt
START WITH rn = 1
CONNECT BY rn = PRIOR rn + 1;
Независимо от того, какой запрос вы используете, у вас теперь будет список разделенных запятыми схем, которыеначать со строки «IAS».Например, предположим, что список выглядит как IAS_1, IAS_2, IAS_3
и т. Д. Ваша команда изменится с:
Expdp admin/admin@orcl schemas like 'IAS%' file=my_data.dmp directory=exp_dir
на что-то более похожее на:
Expdp admin/admin@orcl schemas=IAS_1,IAS_2,IAS_3 file=my_data.dmp directory=exp_dir
Если схемы часто создаются и удаляются в этой базе данных, вы можете выполнить запрос, чтобы обновить список схем, на которые влияют, и вручную скопировать и вставить новый список.Если это часто случается, вы также можете создать сценарий динамического SQL для генерации и выполнения команды EXPDP.
Надеюсь, это поможет!
Документация по Data Pump: https://docs.oracle.com/cd/E11882_01/server.112/e22490/dp_export.htm#SUTIL200
Документация по функции listagg: https://docs.oracle.com/cd/E11882_01/server.112/e41084/functions089.htm#SQLRF30030