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.