sql >> Database >  >> RDS >> Oracle

Queryresultaten exporteren naar een CSV-bestand in SQLcl (Oracle)

Als u SQLcl gebruikt om query's uit te voeren op Oracle Database, dan kunt u de SPOOL . gebruiken commando om uw zoekopdrachtresultaten naar een CSV-bestand te exporteren.

Voorbeeld

Hier is een voorbeeld dat een hele tabel exporteert:

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

Dit is wat het deed, regel voor regel:

  1. Mijn eerste regel stelt de SQLFORMAT . in naar csv . Dit zorgt ervoor dat de uitvoer daadwerkelijk door komma's wordt gescheiden. Als ik dit niet deed, zou ik een bestand kunnen krijgen met een .csv extensie, maar met inhoud die niet door komma's is gescheiden.
  2. De tweede regel is waar we de SPOOL . gebruiken commando om aan te geven waar het uitvoerbestand zal worden geschreven. Zorg ervoor dat u de /Users/barney/data/countries.csv onderdeel naar een locatie op uw systeem.
  3. Op de derde regel heb ik de SQL-query uitgevoerd - de resultaten waarvoor ik exporteer. In dit geval heb ik de hele countries geëxporteerd tafel.
  4. Vervolgens draaide ik SPOOL uit.
  5. Eindelijk ben ik klaar met het instellen van de SQLFORMAT terug naar ansiconsole (wat ik gebruikte voordat ik het instelde op csv ).

Zo ziet het resulterende bestand eruit:

"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. 

Kolomkoppen verwijderen

U kunt de kolomkoppen verwijderen met 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

Resultaat:

"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 dit geval veranderde ik HEADINGS weer aan nadat ik het bestand heb geëxporteerd.

Feedback verwijderen

U kunt de X rows selected met 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

Resultaat:

"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 draaide ik FEEDBACK weer aan na het exporteren van het bestand.

Meerdere tabellen

In dit voorbeeld exporteer ik de resultaten van een iets complexere query die twee tabellen verbindt:

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

Resulterend bestand:

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"

Voeg de resultaten toe

Standaard SPOOL gebruikt REPLACE , die het bestand vervangt als het al bestaat.

We kunnen echter de APPEND . gebruiken argument om de resultaten aan het bestand toe te voegen.

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

Resulterend bestand:

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 dit voorbeeld zijn de resultaten toegevoegd aan het bestand dat in het vorige voorbeeld is gemaakt (en ingevuld).


  1. Inleiding tot Oracle Mobile Cloud Service

  2. Het dubbele aanhalingsteken weglaten om een ​​query uit te voeren op PostgreSQL

  3. Zoek naar "hele woord match" met SQL Server LIKE-patroon

  4. Neo4j - Creëer een beperking met Cypher