sql >> Databasteknik >  >> RDS >> Oracle

Hur man skriver till en CSV-fil med Oracle SQL*Plus

[SQLPlus](https://docs.oracle.com/cd/B19306_01/server.102/b14357/qstart.htm) är ett interaktivt verktyg som kommer installerat med alla moderna Oracle-installationer. SQL Plus låter dig gå utöver standarddatabasfrågorna med batcher, skript och beräkningar utöver Oracles normala räckvidd.

Det är till och med möjligt, som vi ska utforska nedan – att generera textfiler, såsom .csv , med utdata från en viss databasfråga.

Starta SQL*Plus

Beroende på din Oracle-installation kan du ha tillgång till en av många olika versioner eller "lägen" för att köra SQL*Plus-applikationen.

SQL*Plus Kommandorad

Om du vill använda SQL*Plus Command-line , utfärdar du helt enkelt sqlplus kommando från ditt skal:

$ sqlplus

Detta kommer att försöka ansluta dig till standard databas och du kommer att bli ombedd att ange dina referenser för att autentisera dig.

Om du behöver ansluta till en annan database eller använd en annan user (schema ), prova följande, ersätt dina egna värden vid behov:

$ sqlplus schema@//machine.domain:port/database

iSQL*Plus

Om du har tillgång till det kanske du vill använda iSQL*Plus , som är en webbläsarbaserad version av kommandoradsverktyget SQL*Plus.

Detta görs genom att helt enkelt besöka iSQL*Plus URL för din databas och installation. Den exakta webbadressen kommer att variera, men den är vanligtvis i följande format:http://machine_name.domain:port/isqlplus

SQL*Plus för Windows

Om du använder Windows finns det också en Windows GUI-version av SQL*Plus, som vanligtvis kan startas från din startmeny:Start > Programs > Oracle > Application Development > SQL Plus .

Skriva en fråga till en fil

Nu när du är ansluten till SQL*Plus kan vi börja skapa vår fil.

Ändra SQL*Plus-konfiguration

Det första steget är att konfigurera vissa SQL*PLus-systeminställningar med SET uttalande.

I det här exemplet kommer vi att manuellt ändra dessa inställningar en gång innan vår fråga och filgenerering, men om så önskas kan du ändra standardinställningarna för olika inställningar i din User Profile , som finns i login.sql fil.

set colsep ,
set headsep off
set pagesize 0
set trimspool on

De första inställningarna vill du vanligtvis inte ändra, men vi förklarar kort vad varje åstadkommer.

  • colsep är avgränsningstecknet som används för att dela upp dina kolumner. För en .csv fil, detta är ett enkelt kommatecken.
  • headsep är avgränsningstecknet för rubrikraden (om du behöver en). I det här exemplet matar vi inte ut rubrikraden, så vi lämnar denna off .
  • pagesize är antalet rader "per sida". Detta är en lite ålderdomlig inställning som är avsedd för utskrift utan att ha för många rader per sida. Med värdet 0 , vi använder inte sidor eftersom vi matar ut till en fil. Om du väljer att visa header rad, ställ in pagesize till ett mycket stort antal (större än det förväntade antalet postresultat i frågan), så din rubrikrad kommer bara att visas en gång istället för en gång "per sida".
  • trimspool inställd på on tar helt enkelt bort efterföljande blanksteg.

Nu kommer de två sista inställningarna att behöva ändras beroende på din fråga.

set linesize #
set numwidth #
  • För linesize , # värde ska vara det totala antalet utdatakolumner i din sökfråga.
  • numwidth är kolumnbredden (antal teckenmellanslag) som används vid utmatning av numeriska värden.

SPOOL-kommando

Obs:SPOOL kommandot är inte tillgängligt i den webbläsarbaserade SQL*Plus-versionen, iSQL*Plus . För att generera filer medan du använder iSQL*Plus, ändra de nödvändiga inställningarna så att de matas ut direkt till en fil.

Med våra inställningar omhändertagna måste vi nu berätta för SQL*Plus att mata ut en fil. Detta görs med SPOOL uttalande.

Medan SPOOL är aktiv , SQL*PLus kommer att lagra utdata från alla frågor till den angivna filen.

Därför är nästa kommando att ange spool :

spool file_path

Hoppa lite framåt, efter din fråga har infogats måste du också stoppa spool så filutgången stängs genom att använda spool off kommando:

spool off

Infoga frågan

Det sista steget efter att inställningarna har ändrats och spool körs är att infoga din fråga. För vårt enkla exempel, vi matar ut alla böcker från våra books bord.

SELECT
  title,
  primary_author
FROM
  books;

Glöm inte semikolonet för att stänga din frågesats, ange sedan ovannämnda spool off kommando.

Det är det, du har skapat en ny textfil med resultaten av din fråga med SQL*Plus.

Tips:Använd en skriptfil

Istället för att manuellt ange varje rad, föreslås det att du anger alla inställningar i en ny skriptfil som du kan köra i SQL*Plus med ett enda kommando.

Skapa en ny skriptfil med EDIT uttalande:

EDIT file_name

Klistra in hela skriptkommandolistan i din nya fil och spara. Det fullständiga innehållet i vårt exempelskript finns nedan.

set colsep ,
set headsep off
set pagesize 0
set trimspool on
set linesize 2
set numwidth 5

spool books.csv

SELECT
  title,
  primary_author
FROM
  books;

spool off

För att köra skriptet, använd helt enkelt @ symbol följt av filnamnet:

@file_name

Ditt skript ska köras och .csv fil skapad som förväntat.


  1. Hur man får aktuell veckodata i MySQL

  2. Oracle ORA-30004 när du använder funktionen SYS_CONNECT_BY_PATH,

  3. 7 saker att se upp med i din PostgreSQL-distribution

  4. SQL välj max(datum) och motsvarande värde