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

Jak exportovat výsledky dotazu do souboru CSV v SQLcl (Oracle)

Pokud ke spouštění dotazů proti databázi Oracle používáte SQLcl, můžete použít SPOOL export výsledků dotazu do souboru CSV.

Příklad

Zde je příklad exportu celé tabulky:

SET SQLFORMAT csv
SPOOL '/Users/barney/data/countries.csv';
SELECT * FROM countries;
SPOOL off;
SET SQLFORMAT ansiconsole 

Tady je to, co to udělalo, řádek po řádku:

  1. Můj první řádek nastavuje SQLFORMAT do csv . Tím je zajištěno, že výstup je ve skutečnosti oddělen čárkou. Pokud bych to neudělal, mohl bych skončit se souborem s .csv rozšíření, ale s obsahem, který není oddělen čárkami.
  2. Na druhém řádku používáme SPOOL příkaz k určení, kam bude výstupní soubor zapsán. Nezapomeňte změnit /Users/barney/data/countries.csv část do umístění ve vašem systému.
  3. Na třetím řádku jsem spustil SQL dotaz – výsledky, pro které exportuji. V tomto případě jsem exportoval celé countries stůl.
  4. Dále jsem přešel na SPOOL vypnuto.
  5. Nakonec jsem skončil nastavením SQLFORMAT zpět na ansiconsole (což jsem používal, než jsem to nastavil na csv ).

Takto vypadá výsledný soubor:

"COUNTRY_ID","COUNTRY_NAME","REGION_ID""AR","Argentina",2"AU","Austrálie",3"BE","Belgie",1"BR","Brazílie",2 "CA","Kanada",2"CH","Švýcarsko",1"CN","Čína",3"DE","Německo",1"DK","Dánsko",1"EG"," Egypt",4"FR","Francie",1"HK","HongKong",3"IL","Izrael",4"IN","Indie",3"IT","Itálie",1" JP","Japonsko",3"KW","Kuvajt",4"MX","Mexiko",2"NG","Nigérie",4"NL","Nizozemsko",1"SG","Singapur ",3"UK","Spojené království",1"US","Spojené státy americké",2"ZM","Zambie",4"ZW","Zimbabwe",je vybráno 425 řádků. 

Odstranit záhlaví sloupců

Záhlaví sloupců můžete odstranit pomocí SET HEADING off :

SET SQLFORMAT csv
SET HEADING off
SPOOL '/Users/barney/data/countries.csv';
SELECT * FROM countries;
SPOOL off;
SET SQLFORMAT ansiconsole
SET HEADING on 

Výsledek:

"AR","Argentina",2"AU","Austrálie",3"BE","Belgie",1"BR","Brazílie",2"CA","Kanada",2"CH ","Švýcarsko",1"CN","Čína",3"DE","Německo",1"DK","Dánsko",1"EG","Egypt",4"FR","Francie" ,1"HK","HongKong",3"IL","Izrael",4"IN","Indie",3"IT","Itálie",1"JP","Japonsko",3"KW" "Kuvajt",4"MX","Mexiko",2"NG","Nigérie",4"NL","Nizozemsko",1"SG","Singapur",3"UK","Spojené království" ,1"US","Spojené státy americké",2"ZM","Zambie",4"ZW","Zimbabwe",je vybráno 425 řádků. 

V tomto případě jsem otočil HEADINGS znovu zapněte poté, co jsem soubor exportoval.

Odebrat zpětnou vazbu

Můžete odstranit X rows selected s SET FEEDBACK off :

SET SQLFORMAT csv
SET HEADING off
SET FEEDBACK off
SPOOL '/Users/barney/data/countries.csv';
SELECT * FROM countries;
SPOOL off;
SET SQLFORMAT ansiconsole
SET HEADING on 
SET FEEDBACK on 

Výsledek:

"AR","Argentina",2"AU","Austrálie",3"BE","Belgie",1"BR","Brazílie",2"CA","Kanada",2"CH ","Švýcarsko",1"CN","Čína",3"DE","Německo",1"DK","Dánsko",1"EG","Egypt",4"FR","Francie" ,1"HK","HongKong",3"IL","Izrael",4"IN","Indie",3"IT","Itálie",1"JP","Japonsko",3"KW" "Kuvajt",4"MX","Mexiko",2"NG","Nigérie",4"NL","Nizozemsko",1"SG","Singapur",3"UK","Spojené království" ,1"US","Spojené státy americké",2"ZM","Zambie",4"ZW","Zimbabwe",4

Zde jsem obrátil FEEDBACK zpět po exportu souboru.

Více tabulek

V tomto příkladu exportuji výsledky trochu složitějšího dotazu, který spojuje dvě tabulky:

SET SQLFORMAT csv 
SET HEADING off 
SET FEEDBACK off
SPOOL '/Users/barney/data/employees_jobs.csv';
SELECT 
    e.employee_id,
    e.first_name,
    e.last_name,
    e.salary,
    j.job_title
FROM employees e
INNER JOIN jobs j
ON e.job_id = j.job_id
WHERE e.salary BETWEEN 12000 AND 15000
ORDER BY SALARY DESC;
SPOOL off;
SET SQLFORMAT ansiconsole
SET HEADING on 
SET FEEDBACK on 

Výsledný soubor:

145,"John","Russell",14000,"Manažer prodeje"146,"Karen","Partners",13500,"Manažer prodeje"201,"Michael","Hartstein",13000,"Marketingový manažer "147,"Alberto","Errazuriz",12000,"Manažer prodeje"205,"Shelley","Higgins",12000,"Účetní manažer"108,"Nancy","Greenberg",12000,"Finanční manažer" 

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.

SET SQLFORMAT csv 
SET HEADING off 
SET FEEDBACK off
SPOOL '/Users/barney/data/employees_jobs.csv' APPEND;
SELECT 
    e.employee_id,
    e.first_name,
    e.last_name,
    e.salary,
    j.job_title
FROM employees e
INNER JOIN jobs j
ON e.job_id = j.job_id
WHERE e.salary BETWEEN 11000 AND 11999
ORDER BY SALARY DESC;
SPOOL off;
SET SQLFORMAT ansiconsole
SET HEADING on 
SET FEEDBACK on 

Výsledný soubor:

145,"John","Russell",14000,"Manažer prodeje"146,"Karen","Partners",13500,"Manažer prodeje"201,"Michael","Hartstein",13000,"Marketingový manažer "147,"Alberto","Errazuriz",12000,"Manažer prodeje"205,"Shelley","Higgins",12000,"Účetní manažer"108,"Nancy","Greenberg",12000,"Finanční manažer"168 "Lisa","Ozer",11500,"Obchodní zástupce"174,"Ellen","Abel",11000,"Obchodní zástupce"114,"Den","Raphaely",11000,"Manažer nákupu"148," Gerald","Cambrault",11000,"Manažer prodeje"

Tento příklad připojil výsledky k souboru, který byl vytvořen (a naplněn) v předchozím příkladu.


  1. Benchmarking Postgres-XL

  2. Seznam specifikátorů formátu data MySQL

  3. Jak zacházet s výjimkami to_date ve výpisu SELECT, aby se tyto řádky ignorovaly?

  4. Spusťte SCRIPT z PL/SQL Block