När du frågar Oracle Database kan du använda SPOOL
kommando för att exportera dina frågeresultat till en textfil när du använder SQLcl.
Exempel
Här är ett exempel som exporterar en hel tabell:
SPOOL '/Users/barney/data/regions.txt';
SELECT * FROM regions;
SPOOL off;
Så här gjorde den rad för rad:
- Den första raden använder
SPOOL
kommando för att ange var utdatafilen ska skrivas. Se till att ändra/Users/barney/data/regions.txt
till en plats på ditt system och ett lämpligt filnamn. - På den andra raden körde jag SQL-frågan – resultaten för vilka jag exporterar. I det här fallet exporterade jag hela
regions
tabell. - Närnäst vände jag till
SPOOL
av.
Så här ser den resulterande filen ut:
REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa 4 rows selected.
I mitt fall, min SQLFORMAT
var inställd på ansiconsole
, och så återspeglar utdata det.
Du kan ändra detta till vilket format som helst.
Här är ett exempel på att exportera resultatet i ett format som kan användas 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 det här fallet återställer jag också SQLFORMAT
tillbaka till ansiconsole
en gång SPOOL
operationen hade slutförts.
Ta bort feedback
Du kan ta bort 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 det här fallet vände jag till FEEDBACK
igen efter att ha exporterat filen.
Lägg till resultaten
Som standard, SPOOL
använder REPLACE
, som ersätter filen om den redan finns.
Däremot kan vi använda APPEND
argument för att lägga till resultaten till filen.
Exempel:
SET SQLFORMAT ansiconsole
SET FEEDBACK off
SPOOL '/Users/barney/data/regions_no_feedback.txt' APPEND;
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on
Resultatfil:
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
Det här exemplet bifogade resultaten till filen som skapades (och fylldes i) i föregående exempel. Detta resulterade i att resultatet duplicerades i filen.
Skriv över den befintliga filen
Vi kan använda REPLACE
för att skriva över den befintliga filen med resultaten av en ny fråga:
SET SQLFORMAT ansiconsole
SET FEEDBACK off
SPOOL '/Users/barney/data/regions_no_feedback.txt' REPLACE;
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on
Resultatfil:
REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa
Som nämnt, REPLACE
är standardinställningen, så vi kunde helt enkelt ha utelämnat detta argument helt och hållet.