SQL*Loader Discard file

Vogliamo caricare in una tabella i dati presenti in un file esterno che ha formato csv con delimitatore tra le colonne uguale alla virgola.

L'obiettivo è caricare solo alcune righe che soddisfano una determinata condizione.

 Il file esterno è un csv così fatto.



1) Salvare il file csv sotto una directory a piacere come  /u01/app/oracle/file_ext.

2) Collegarsi ad un pdb come amministratore e creaimo una tabella esterna:


SQL>  CON_NAME 
      -----------------
      ORCLPDB

SQL> show user
     USER è "HR"

SQL> create table emp_load (
            id number,
            nome varchar2(100),
            cognome varchar2(100));

3) Creae un control file (con estensione ctl) con il seguente codice che contiene riferimento a righe da scartare durante il carimaneto (discarded).
Salvare il file sotto il path contenente il file esterno.

[oracle@test file_ext]$ vi /u01/app/oracle/file_ext/emp.ctl 

Load Data
INFILE '/u01/app/oracle/file_ext/emp.csv'
APPEND
INTO Table emp_load
WHEN empno <> '1008' 
FIELDS TERMINATED BY ',' 
(id,
nome,
cognome
)


4) Eseguire dal server Oracle la seguente linea di codice

[oracle@test ~]$ sqlldr control=/u01/app/oracle/file_ext/emp.ctl  log=/u01/app/oracle/file_ext/emp.log

Username:hr/hr@orclpdb


5) Per generare il file degli scarti 

[oracle@test ~]$ sqlldr control=/u01/app/oracle/file_ext/emp.ctl  log=/u01/app/oracle/file_ext/emp.log DISCARD=emp.dsc


Verifica:
[oracle@test file_ext]$ more emp.dsc 
104145,Bruce145,Ernst145

Post popolari in questo blog

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione

Create e Drop Pluggable Database