Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So exportieren Sie Abfrageergebnisse in eine CSV-Datei in SQLcl (Oracle)

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:

  1. Meine erste Zeile setzt das SQLFORMAT in csv . 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.
  2. 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.
  3. 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.
  4. Als nächstes drehte ich SPOOL aus.
  5. Schließlich habe ich mit dem Setzen des SQLFORMAT abgeschlossen zurück zu ansiconsole (was ich verwendet habe, bevor ich es auf csv 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.