sql >> Databáze >  >> RDS >> Oracle

Pořízení výpisu tabulek v oracle 10g pomocí procedury PL/SQL

Jak jste na 10g, můžete to udělat pomocí Data Pump API. Musíte mít přístup pro čtení a zápis do objektu adresáře, který se mapuje do cílového adresáře OS.

V následujícím příkladu exportuji dvě tabulky, EMP a DEPT, do souboru s názvem EMP.DMP v adresáři označeném 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 se ptá:

"Je k dispozici podobný nástroj datové pumpy nebo API pro spuštění ze strany klienta?"

DataPump, PL/SQL API i obslužný program OS, zapisují do adresářů Oracle. Adresář Oracle musí představovat adresář OS, který je viditelný pro databázi. Obvykle je to adresář na serveru, i když předpokládám, že je teoreticky možné namapovat jednotku PC do sítě. Museli byste přesvědčit svého správce sítě, že je to dobrý nápad, že se to těžko prodává, protože to není...

Starší nástroje IMP a EXP čtou a zapisují z adresářů klientů, takže je teoreticky možné IMP soubor místního výpisu paměti do vzdálené databáze. Ale nemyslím si, že je to praktický přístup. Soubory výpisu bývají ze své podstaty velké, takže import přes síť je pomalý a náchylný k selhání. Mnohem lepším řešením je zazipovat soubor výpisu, zkopírovat jej na server a odtud importovat.



  1. Mapování pole pomocí režimu spánku

  2. MariaDB JSON_LOOSE() Vysvětleno

  3. Podporované modely formátů pro datové funkce ROUND() a TRUNC() v Oracle

  4. Najděte překrývající se období v PostgreSQL