sql >> Databasteknik >  >> RDS >> Oracle

Hur man exporterar frågeresultat till en .txt-fil när du använder SQLcl (Oracle)

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.


  1. Hur felsöker man postgresql lagrade procedurer?

  2. Kan inte ansluta till PostgreSQL med PHP pg_connect()

  3. Varför gör MYSQL högre LIMIT offset långsammare frågan?

  4. Åtgärder att ta om du har ett MySQL-avbrott