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

Jak zapisovat do souboru CSV pomocí Oracle SQL*Plus

[SQLPlus](https://docs.oracle.com/cd/B19306_01/server.102/b14357/qstart.htm) je interaktivní nástroj, který je dodáván s každou moderní instalací Oracle. SQL Plus vám umožňuje jít nad rámec standardních databázových dotazů pomocí dávek, skriptů a výpočtů nad rámec běžného rozsahu Oracle.

Je dokonce možné, jak prozkoumáme níže – generovat textové soubory, jako je .csv pomocí výstupu konkrétního databázového dotazu.

Spouštění SQL*Plus

V závislosti na vaší instalaci Oracle můžete mít přístup k jedné z mnoha různých verzí nebo „režimů“, ve kterých můžete spouštět aplikaci SQL*Plus.

Příkazový řádek SQL*Plus

Pokud chcete použít SQL*Plus Command-line , jednoduše vydáte sqlplus příkaz z vašeho shellu:

$ sqlplus

Pokusí se vás připojit k výchozímu databáze a budete vyzváni k zadání přihlašovacích údajů, abyste se mohli ověřit.

V případě, že se potřebujete připojit k jiné database nebo použijte jiného user (schema ), zkuste následující a podle potřeby nahraďte své vlastní hodnoty:

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

iSQL*Plus

Pokud k němu máte přístup, možná budete chtít použít iSQL*Plus , což je verze nástroje příkazového řádku SQL*Plus založená na prohlížeči.

Toho dosáhnete jednoduše návštěvou iSQL*Plus URL pro vaši databázi a instalaci. Přesná adresa URL se bude lišit, ale obvykle je v následujícím formátu:http://machine_name.domain:port/isqlplus

SQL*Plus pro Windows

Pokud používáte Windows, existuje také verze SQL*Plus s grafickým uživatelským rozhraním Windows, kterou lze obvykle spustit z nabídky Start:Start > Programs > Oracle > Application Development > SQL Plus .

Výstup dotazu do souboru

Nyní, když jste připojeni k SQL*Plus, můžeme začít vytvářet náš soubor.

Upravit konfiguraci SQL*Plus

Prvním krokem je konfigurace některých nastavení systému SQL*PLus pomocí SET prohlášení.

V tomto příkladu tato nastavení ručně změníme jednou před naším dotazem a vygenerováním souboru, ale pokud si to přejete, můžete změnit výchozí hodnoty různých nastavení ve svém User Profile , který se nachází v login.sql soubor.

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

Prvních několik nastavení, která obvykle nebudete chtít měnit, ale stručně vysvětlíme, čeho každé z nich dosahuje.

  • colsep je oddělovací znak používaný k rozdělení sloupců. Pro .csv soubor, toto je jednoduchá čárka.
  • headsep je oddělovací znak pro řádek záhlaví (pokud jej požadujete). V tomto příkladu nevydáváme řádek záhlaví, takže toto ponecháme off .
  • pagesize je počet řádků „na stránku“. Toto je mírně archaické nastavení, které je určeno pro tisk bez příliš velkého počtu řádků na stránku. S hodnotou 0 , stránky nepoužíváme, protože vytváříme výstup do souboru. Pokud se rozhodnete zobrazit header řádek, nastavte pagesize na velmi velký počet (větší než očekávaný počet záznamů v dotazu), takže řádek záhlaví se zobrazí pouze jednou, nikoli jednou „na stránku“.
  • trimspool nastavte na on jednoduše odstraní mezery na konci.

Nyní bude potřeba změnit poslední dvě nastavení v závislosti na vašem dotazu.

set linesize #
set numwidth #
  • Pro linesize , # hodnota by měl být celkový počet výstupních sloupců ve výsledném dotazu.
  • numwidth je šířka sloupce (počet znakových mezer) použitá při výstupu číselných hodnot.

Příkaz SPOOL

Poznámka:SPOOL příkaz není k dispozici ve verzi SQL*Plus pro prohlížeč, iSQL*Plus . Chcete-li generovat soubory při používání iSQL*Plus, změňte nezbytná nastavení předvoleb na přímý výstup do souboru.

S naším nastavením se postaráme, nyní musíme říci SQL*Plus, aby vytiskl soubor. Toho lze dosáhnout pomocí SPOOL prohlášení.

Zatímco SPOOL je aktivní , SQL*PLus uloží výstup jakéhokoli dotazu do zadaného souboru.

Proto je dalším příkazem, který je třeba zadat, spool :

spool file_path

Mírné přeskakování vpřed, po je vložen váš dotaz, musíte také zastavit spool takže výstup souboru je uzavřen pomocí spool off příkaz:

spool off

Vložit dotaz

Poslední krok po úpravě nastavení a spool běží je vložit váš dotaz. Pro náš jednoduchý příklad vypisujeme všechny knihy z našich books tabulka.

SELECT
  title,
  primary_author
FROM
  books;

Nezapomeňte na středník pro uzavření dotazu a poté zadejte výše uvedené spool off příkaz.

To je vše, vygenerovali jste nový textový soubor s výsledky vašeho dotazu pomocí SQL*Plus.

Tip:Použití souboru skriptu

Spíše než ruční zadávání každého řádku se doporučuje zadat všechna nastavení do nového souboru skriptu, který můžete spustit v SQL*Plus jediným příkazem.

Vytvořte nový soubor skriptu pomocí EDIT prohlášení:

EDIT file_name

Nyní vložte celý seznam příkazů skriptu do nového souboru a uložte. Úplný obsah našeho vzorového skriptu naleznete níže.

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

Pro spuštění skriptu jednoduše použijte @ symbol následovaný názvem souboru:

@file_name

Váš skript by měl být spuštěn a .csv soubor vytvořen podle očekávání.


  1. PostgreSQL:běžící počet řádků pro dotaz „po minutě“

  2. Maximální počet znaků ve štítcích (názvy tabulek, sloupce atd.)

  3. Nejlepší způsoby, jak zvýšit efektivitu databáze

  4. Oracle:Pokud tabulka existuje