Při dotazování na Oracle Database můžete použít SPOOL
k exportu výsledků dotazu do textového souboru při použití SQLcl.
Příklad
Zde je příklad exportu celé tabulky:
SPOOL '/Users/barney/data/regions.txt';
SELECT * FROM regions;
SPOOL off;
Tady je to, co to udělalo, řádek po řádku:
- První řádek používá
SPOOL
příkaz k určení, kam bude výstupní soubor zapsán. Nezapomeňte změnit/Users/barney/data/regions.txt
do umístění ve vašem systému a odpovídající název souboru. - Na druhém řádku jsem spustil SQL dotaz – výsledky, pro které exportuji. V tomto případě jsem exportoval celé
regions
stůl. - Dále jsem zapnul
SPOOL
vypnuto.
Takto vypadá výsledný soubor:
REGION_ID REGION_NAME ____________ _________________________ 1 Evropa 2 Amerika 3 Asie 4 Střední východ a Afrika 4 vybrané řádky.
V mém případě můj SQLFORMAT
byla nastavena na ansiconsole
a výstup to odráží.
Toto můžete změnit na jakýkoli vhodný formát.
Zde je příklad exportu výsledku ve formátu, který lze použít jako soubor importu pomocí sql*loader:
SET SQLFORMAT loader
SPOOL '/Users/barney/data/regions_loader.txt';
SELECT * FROM regions;
SPOOL off;
SET SQLFORMAT ansiconsole
Výsledek:
1|"Evropa"| 2|"Amerika"| 3|"Asie"| 4|"Blízký východ a Afrika"|Vybrány 4 řádky.
V tomto případě jsem také resetoval SQLFORMAT
zpět na ansiconsole
jakmile SPOOL
operace byla dokončena.
Odebrat zpětnou vazbu
Můžete odstranit X rows selected
s 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
Výsledek:
REGION_ID REGION_NAME ____________ _________________________ 1 Evropa 2 Amerika 3 Asie 4 Střední východ a Afrika
V tomto případě jsem otočil FEEDBACK
zpět po exportu souboru.
Připojit výsledky
Ve výchozím nastavení SPOOL
používá REPLACE
, který nahradí soubor, pokud již existuje.
Můžeme však použít APPEND
argument pro připojení výsledků k souboru.
Příklad:
SET SQLFORMAT ansiconsole
SET FEEDBACK off
SPOOL '/Users/barney/data/regions_no_feedback.txt' APPEND;
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on
Výsledný soubor:
REGION_ID REGION_NAME ____________ _________________________ 1 Evropa 2 Amerika 3 Asie 4 Blízký východ a Afrika REGION_ID REGION_NAME ______________ Evropa Střední Amerika a Afrika Asie _____3 před AsiíTento příklad připojil výsledky k souboru, který byl vytvořen (a naplněn) v předchozím příkladu. Výsledkem bylo duplikování výsledku v souboru.
Přepsat existující soubor
Můžeme použít
REPLACE
pro přepsání existujícího souboru výsledky nového dotazu:SET SQLFORMAT ansiconsole SET FEEDBACK off SPOOL '/Users/barney/data/regions_no_feedback.txt' REPLACE; SELECT * FROM regions; SPOOL off; SET FEEDBACK on
Výsledný soubor:
REGION_ID REGION_NAME ____________ _________________________ 1 Evropa 2 Amerika 3 Asie 4 Střední východ a AfrikaJak již bylo zmíněno,
REPLACE
je výchozí nastavení, takže jsme tento argument mohli jednoduše vynechat.