Oracle
 sql >> Database >  >> RDS >> Oracle

script che estrae i dati da un file txt nella clausola where

Sembra una directory esterna Oracle è perfetto per il lavoro. Tieni presente che questo approccio è irto di difficoltà se si tratta di un file di testo in cui gli utenti possono scrivere. Gli utenti faranno cento cose che non avresti mai creduto possibili che causeranno errori e altro .

Dall'articolo:

Crea una directory

concedi lettura, scrivi nella directory data_dir al tuo_utente;

Crea una tabella esterna

CREATE TABLE test_ext (
  test_code      VARCHAR2(5),
  test_name      VARCHAR2(50)
)
ORGANIZATION EXTERNAL (
  TYPE ORACLE_LOADER
  DEFAULT DIRECTORY ext_tab_data
  ACCESS PARAMETERS (
    RECORDS DELIMITED BY NEWLINE
    FIELDS TERMINATED BY ','
    MISSING FIELD VALUES ARE NULL
    (
      test_code      CHAR(5),
      test_name      CHAR(50)
    )
  )
  LOCATION ('test1.txt','test2.txt')
)
PARALLEL 5
REJECT LIMIT UNLIMITED;

e poi leggi dalla tabella

SELECT *
    FROM   test_ext
    ORDER BY test_name;

Modifica:puoi ancora farlo con le directory che non si trovano sul server del database, ma è necessario più lavoro e questo rappresenta un rischio ancora maggiore per la sicurezza del database e la qualità dei dati. Neanche questo approccio è scalabile. Intendi aggiungere una nuova directory ogni volta che viene aggiunto un nuovo utente?

Passaggi per consentire a Oracle di accedere ai file che si trovano su un'altra macchina (supponendo il sistema operativo Windows)

  • crea un utente Windows o di dominio che avrà i permessi di lettura dei file su ogni directory a cui desideri accedere
  • sul server di database eseguire services.msc e modificare l'utente su cui viene eseguito il servizio di database Oracle nel nuovo utente di dominio. Aggiungi questo utente al gruppo locale chiamato ORA_DBA sul server di database
  • riavvia il database per rendere effettive le modifiche
  • crea una directory nel database usando un percorso come //clientPc/sharedFolder
  • Concedi i permessi di lettura al tuo utente del database
  • sulla macchina client concedere la lettura all'utente di dominio su quella cartella
  • verifica la connettività utilizzando UTLFILE per leggere un file di esempio sul pc client