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

Come esportare i risultati della query in un file .txt quando si utilizza SQLcl (Oracle)

Quando si esegue una query su Oracle Database, è possibile utilizzare SPOOL comando per esportare i risultati della query in un file di testo quando si utilizza SQLcl.

Esempio

Ecco un esempio che esporta un'intera tabella:

SPOOL '/Users/barney/data/regions.txt';
SELECT * FROM regions;
SPOOL off;

Ecco cosa ha fatto, riga per riga:

  • La prima riga utilizza il SPOOL comando per specificare dove verrà scritto il file di output. Assicurati di modificare /Users/barney/data/regions.txt in una posizione sul tuo sistema e un nome file appropriato.
  • Sulla seconda riga, ho eseguito la query SQL, i risultati per i quali sto esportando. In questo caso, ho esportato tutte le regions tabella.
  • Poi ho girato SPOOL spento.

Ecco come appare il file risultante:

   REGION_ID               REGION_NAME 
____________ _________________________ 
           1 Europe                    
           2 Americas                  
           3 Asia                      
           4 Middle East and Africa    

4 rows selected. 

Nel mio caso, il mio SQLFORMAT era impostato su ansiconsole , e quindi l'output lo riflette.

Puoi cambiarlo in qualsiasi formato adatto.

Ecco un esempio di esportazione del risultato in un formato che può essere utilizzato come file di importazione con sql*loader:

SET SQLFORMAT loader
SPOOL '/Users/barney/data/regions_loader.txt';
SELECT * FROM regions;
SPOOL off;
SET SQLFORMAT ansiconsole

Risultato:

 1|"Europe"|
 2|"Americas"|
 3|"Asia"|
 4|"Middle East and Africa"|

4 rows selected. 

In questo caso ho anche resettato SQLFORMAT torna a ansiconsole una volta che il SPOOL operazione completata.

Rimuovi feedback

Puoi rimuovere il X rows selected con SET FEEDBACK off :

SET SQLFORMAT ansiconsole
SET FEEDBACK off
SPOOL '/Users/barney/data/regions_no_feedback.txt';
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on

Risultato:

   REGION_ID               REGION_NAME 
____________ _________________________ 
           1 Europe                    
           2 Americas                  
           3 Asia                      
           4 Middle East and Africa    

In questo caso ho girato FEEDBACK riattivare dopo aver esportato il file.

Aggiungi i risultati

Per impostazione predefinita, SPOOL utilizza REPLACE , che sostituisce il file se esiste già.

Tuttavia, possiamo usare il APPEND argomento per aggiungere i risultati al file.

Esempio:

SET SQLFORMAT ansiconsole
SET FEEDBACK off
SPOOL '/Users/barney/data/regions_no_feedback.txt' APPEND;
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on

File risultante:

   REGION_ID               REGION_NAME 
____________ _________________________ 
           1 Europe                    
           2 Americas                  
           3 Asia                      
           4 Middle East and Africa    

   REGION_ID               REGION_NAME 
____________ _________________________ 
           1 Europe                    
           2 Americas                  
           3 Asia                      
           4 Middle East and Africa    

Questo esempio ha aggiunto i risultati al file che è stato creato (e popolato) nell'esempio precedente. Ciò ha comportato la duplicazione del risultato nel file.

Sovrascrivi il file esistente

Possiamo usare REPLACE per sovrascrivere il file esistente con i risultati di una nuova query:

SET SQLFORMAT ansiconsole
SET FEEDBACK off
SPOOL '/Users/barney/data/regions_no_feedback.txt' REPLACE;
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on

File risultante:

   REGION_ID               REGION_NAME 
____________ _________________________ 
           1 Europe                    
           2 Americas                  
           3 Asia                      
           4 Middle East and Africa    

Come accennato, REPLACE è l'impostazione predefinita, quindi avremmo potuto semplicemente omettere del tutto questo argomento.