[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 dennaoff
.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ärdet0
, vi använder inte sidor eftersom vi matar ut till en fil. Om du väljer att visaheader
rad, ställ inpagesize
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.