sql >> Databáze >  >> RDS >> Oracle

Jak exportovat výsledky dotazu do souboru .txt při použití SQLcl (Oracle)

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 Afrika 

Jak již bylo zmíněno, REPLACE je výchozí nastavení, takže jsme tento argument mohli jednoduše vynechat.


  1. Připojovací dotaz MySQL pomocí like?

  2. Seskupená agregace řetězců / LISTAGG pro SQL Server

  3. Jak nainstalovat SQL Server na Ubuntu 18.04

  4. Jak nainstalovat sqlcmd &bcp na Red Hat