Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Pobieranie zrzutu tabel w oracle 10g przy użyciu procedury PL/SQL

Ponieważ korzystasz z 10g, możesz to zrobić za pomocą interfejsu API Data Pump. Musisz mieć dostęp do odczytu i zapisu w obiekcie katalogu, który mapuje do docelowego katalogu systemu operacyjnego.

W poniższym przykładzie eksportuję dwie tabele, EMP i DEPT, do pliku o nazwie EMP.DMP w katalogu identyfikowanym przez 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 pyta:

„Czy istnieje podobne narzędzie do pompowania danych lub API dostępne do wykonania po stronie klienta”

DataPump, zarówno PL/SQL API, jak i narzędzie systemu operacyjnego, zapisuje do katalogów Oracle. Katalog Oracle musi reprezentować katalog systemu operacyjnego, który jest widoczny dla bazy danych. Zwykle jest to katalog na serwerze, chociaż przypuszczam, że teoretycznie możliwe jest mapowanie dysku PC do sieci. Musiałbyś przekonać administratora sieci, że to dobry pomysł, to trudna sprzedaż, ponieważ tak nie jest...

Starsze narzędzia IMP i EXP odczytują i zapisują z katalogów klientów, więc teoretycznie możliwe jest IMPowanie lokalnego pliku zrzutu do zdalnej bazy danych. Ale nie sądzę, żeby to było praktyczne podejście. Z natury pliki zrzutów są zwykle duże, więc importowanie przez sieć jest powolne i podatne na niepowodzenie. O wiele lepszym rozwiązaniem jest spakowanie pliku zrzutu, skopiowanie go na serwer i zaimportowanie z tego miejsca.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TRUNC(liczba) Funkcja w Oracle

  2. Dlaczego Oracle.ManagedDataAccess nie działa, gdy działa Oracle.DataAccess?

  3. Pobierz BLOB z kolumny BFILE w Oracle

  4. JDBC — Oracle ArrayIndexOutOfBoundsException

  5. Jak obsługiwać pojedynczy cytat w Oracle SQL