Når du forespørger i Oracle Database, kan du bruge SPOOL
kommando til at eksportere dine forespørgselsresultater til en tekstfil, når du bruger SQLcl.
Eksempel
Her er et eksempel, der eksporterer en hel tabel:
SPOOL '/Users/barney/data/regions.txt';
SELECT * FROM regions;
SPOOL off;
Her er, hvad det gjorde, linje for linje:
- Den første linje bruger
SPOOL
kommando for at angive, hvor outputfilen skal skrives. Sørg for at ændre/Users/barney/data/regions.txt
til en placering på dit system og et passende filnavn. - På den anden linje kørte jeg SQL-forespørgslen – de resultater, som jeg eksporterer for. I dette tilfælde eksporterede jeg hele
regions
tabel. - Dernæst vendte jeg
SPOOL
slukket.
Sådan ser den resulterende fil ud:
REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa 4 rows selected.
I mit tilfælde er min SQLFORMAT
blev indstillet til ansiconsole
, og så afspejler outputtet det.
Du kan ændre dette til et hvilket som helst format, der passer.
Her er et eksempel på eksport af resultatet i et format, der kan bruges som en importfil med sql*loader:
SET SQLFORMAT loader
SPOOL '/Users/barney/data/regions_loader.txt';
SELECT * FROM regions;
SPOOL off;
SET SQLFORMAT ansiconsole
Resultat:
1|"Europe"| 2|"Americas"| 3|"Asia"| 4|"Middle East and Africa"| 4 rows selected.
I dette tilfælde nulstiller jeg også SQLFORMAT
tilbage til ansiconsole
en gang SPOOL
operationen var afsluttet.
Fjern feedback
Du kan fjerne X rows selected
med 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
Resultat:
REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa
I dette tilfælde har jeg slået FEEDBACK
igen efter eksport af filen.
Tilføj resultaterne
Som standard er SPOOL
bruger REPLACE
, som erstatter filen, hvis den allerede eksisterer.
Vi kan dog bruge koden APPEND
argument for at tilføje resultaterne til filen.
Eksempel:
SET SQLFORMAT ansiconsole
SET FEEDBACK off
SPOOL '/Users/barney/data/regions_no_feedback.txt' APPEND;
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on
Resulterende fil:
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
Dette eksempel føjede resultaterne til den fil, der blev oprettet (og udfyldt) i det forrige eksempel. Dette resulterede i, at resultatet blev duplikeret i filen.
Overskriv den eksisterende fil
Vi kan bruge REPLACE
for at overskrive den eksisterende fil med resultaterne af en ny forespørgsel:
SET SQLFORMAT ansiconsole
SET FEEDBACK off
SPOOL '/Users/barney/data/regions_no_feedback.txt' REPLACE;
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on
Resulterende fil:
REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa
Som nævnt REPLACE
er standardindstillingen, så vi kunne simpelthen have udeladt dette argument helt.