Тъй като сте на 10g, можете да направите това с API на Data Pump. Трябва да имате достъп за четене и запис на обект от директория, който се съпоставя с директорията на целевата операционна система.
В следващия пример експортирам две таблици, EMP и DEPT, във файл, наречен EMP.DMP в директория, идентифицирана от DATA_PUMP_DIR.
SQL> declare
2 dp_handle number;
3 begin
4 dp_handle := dbms_datapump.open(
5 operation => 'EXPORT',
6 job_mode => 'TABLE');
7
8 dbms_datapump.add_file(
9 handle => dp_handle,
10 filename => 'emp.dmp',
11 directory => 'DATA_PUMP_DIR');
12
13 dbms_datapump.add_file(
14 handle => dp_handle,
15 filename => 'emp.log',
16 directory => 'DATA_PUMP_DIR',
17 filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);
18
19 dbms_datapump.metadata_filter(
20 handle => dp_handle,
21 name => 'NAME_LIST',
22 value => '''EMP'',''DEPT''');
23
24 dbms_datapump.start_job(dp_handle);
25
26 dbms_datapump.detach(dp_handle);
27 end;
28 /
PL/SQL procedure successfully completed.
SQL>
@DerekMahar пита:
„Има ли подобен инструмент за изпомпване на данни или API за изпълнение от страна на клиента“
DataPump, както PL/SQL API, така и помощната програма на ОС, пишат в директории на Oracle. Директорията на Oracle трябва да представлява директория на OS, която е видима за базата данни. Обикновено това е директория на сървъра, въпреки че предполагам, че теоретично е възможно да се насочи компютърно устройство към мрежата. Ще трябва да убедите мрежовия си администратор, че това е добра идея, трудно се продава, защото не е...
По-старите IMP и EXP помощни програми четат и записват от клиентски директории, така че теоретично е възможно да се IMP файл за локален дъмп в отдалечена база данни. Но не мисля, че това е практически подход. По своето естество дъмп файловете обикновено са големи, така че импортирането в мрежа е бавно и податливо на неуспех. Много по-добро решение е да архивирате дъмп файла, да го копирате на сървъра и да го импортирате от там.