Wenn Sie SQLcl verwenden, um Abfragen für die Oracle-Datenbank auszuführen, können Sie den SPOOL
verwenden Befehl zum Exportieren Ihrer Abfrageergebnisse in eine CSV-Datei.
Beispiel
Hier ist ein Beispiel, das eine ganze Tabelle exportiert:
SET SQLFORMAT csv
SPOOL '/Users/barney/data/countries.csv';
SELECT * FROM countries;
SPOOL off;
SET SQLFORMAT ansiconsole
Hier ist, was es getan hat, Zeile für Zeile:
- Meine erste Zeile setzt das
SQLFORMAT
incsv
. Dadurch wird sichergestellt, dass die Ausgabe tatsächlich kommasepariert ist. Wenn ich dies nicht tun würde, könnte ich am Ende eine Datei mit einem.csv
erhalten Erweiterung, aber mit Inhalt, der nicht durch Kommas getrennt ist. - In der zweiten Zeile verwenden wir den
SPOOL
Befehl, um anzugeben, wohin die Ausgabedatei geschrieben werden soll. Achten Sie darauf, die Datei/Users/barney/data/countries.csv
zu ändern part an einen Speicherort auf Ihrem System. - In der dritten Zeile habe ich die SQL-Abfrage ausgeführt – die Ergebnisse, für die ich exportiere. In diesem Fall habe ich die ganzen
countries
exportiert Tabelle. - Als nächstes drehte ich
SPOOL
aus. - Schließlich habe ich mit dem Setzen des
SQLFORMAT
abgeschlossen zurück zuansiconsole
(was ich verwendet habe, bevor ich es aufcsv
gesetzt habe ).
So sieht die resultierende Datei aus:
"COUNTRY_ID","COUNTRY_NAME","REGION_ID" "AR","Argentina",2 "AU","Australia",3 "BE","Belgium",1 "BR","Brazil",2 "CA","Canada",2 "CH","Switzerland",1 "CN","China",3 "DE","Germany",1 "DK","Denmark",1 "EG","Egypt",4 "FR","France",1 "HK","HongKong",3 "IL","Israel",4 "IN","India",3 "IT","Italy",1 "JP","Japan",3 "KW","Kuwait",4 "MX","Mexico",2 "NG","Nigeria",4 "NL","Netherlands",1 "SG","Singapore",3 "UK","United Kingdom",1 "US","United States of America",2 "ZM","Zambia",4 "ZW","Zimbabwe",4 25 rows selected.
Spaltenüberschriften entfernen
Sie können die Spaltenüberschriften mit SET HEADING off
entfernen :
SET SQLFORMAT csv
SET HEADING off
SPOOL '/Users/barney/data/countries.csv';
SELECT * FROM countries;
SPOOL off;
SET SQLFORMAT ansiconsole
SET HEADING on
Ergebnis:
"AR","Argentina",2 "AU","Australia",3 "BE","Belgium",1 "BR","Brazil",2 "CA","Canada",2 "CH","Switzerland",1 "CN","China",3 "DE","Germany",1 "DK","Denmark",1 "EG","Egypt",4 "FR","France",1 "HK","HongKong",3 "IL","Israel",4 "IN","India",3 "IT","Italy",1 "JP","Japan",3 "KW","Kuwait",4 "MX","Mexico",2 "NG","Nigeria",4 "NL","Netherlands",1 "SG","Singapore",3 "UK","United Kingdom",1 "US","United States of America",2 "ZM","Zambia",4 "ZW","Zimbabwe",4 25 rows selected.
In diesem Fall habe ich HEADINGS
geändert wieder an, nachdem ich die Datei exportiert habe.
Feedback entfernen
Sie können das X rows selected
mit 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
Ergebnis:
"AR","Argentina",2 "AU","Australia",3 "BE","Belgium",1 "BR","Brazil",2 "CA","Canada",2 "CH","Switzerland",1 "CN","China",3 "DE","Germany",1 "DK","Denmark",1 "EG","Egypt",4 "FR","France",1 "HK","HongKong",3 "IL","Israel",4 "IN","India",3 "IT","Italy",1 "JP","Japan",3 "KW","Kuwait",4 "MX","Mexico",2 "NG","Nigeria",4 "NL","Netherlands",1 "SG","Singapore",3 "UK","United Kingdom",1 "US","United States of America",2 "ZM","Zambia",4 "ZW","Zimbabwe",4
Hier habe ich FEEDBACK
gedreht nach dem Exportieren der Datei wieder einschalten.
Mehrere Tabellen
In diesem Beispiel exportiere ich die Ergebnisse einer etwas komplexeren Abfrage, die zwei Tabellen verbindet:
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
Ergebnisdatei:
145,"John","Russell",14000,"Sales Manager" 146,"Karen","Partners",13500,"Sales Manager" 201,"Michael","Hartstein",13000,"Marketing Manager" 147,"Alberto","Errazuriz",12000,"Sales Manager" 205,"Shelley","Higgins",12000,"Accounting Manager" 108,"Nancy","Greenberg",12000,"Finance Manager"
Fügen Sie die Ergebnisse hinzu
Standardmäßig SPOOL
verwendet REPLACE
, die die Datei ersetzt, falls sie bereits vorhanden ist.
Wir können jedoch das APPEND
verwenden Argument, um die Ergebnisse an die Datei anzuhängen.
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
Ergebnisdatei:
145,"John","Russell",14000,"Sales Manager" 146,"Karen","Partners",13500,"Sales Manager" 201,"Michael","Hartstein",13000,"Marketing Manager" 147,"Alberto","Errazuriz",12000,"Sales Manager" 205,"Shelley","Higgins",12000,"Accounting Manager" 108,"Nancy","Greenberg",12000,"Finance Manager" 168,"Lisa","Ozer",11500,"Sales Representative" 174,"Ellen","Abel",11000,"Sales Representative" 114,"Den","Raphaely",11000,"Purchasing Manager" 148,"Gerald","Cambrault",11000,"Sales Manager"
In diesem Beispiel wurden die Ergebnisse an die Datei angehängt, die im vorherigen Beispiel erstellt (und gefüllt) wurde.