Si vous utilisez SQLcl pour exécuter des requêtes sur Oracle Database, vous pouvez utiliser le SPOOL commande pour exporter les résultats de votre requête dans un fichier CSV.
Exemple
Voici un exemple qui exporte une table entière :
SET SQLFORMAT csv
SPOOL '/Users/barney/data/countries.csv';
SELECT * FROM countries;
SPOOL off;
SET SQLFORMAT ansiconsole Voici ce qu'il a fait, ligne par ligne :
- Ma première ligne définit le
SQLFORMATverscsv. Cela garantit que la sortie est réellement séparée par des virgules. Si je ne le faisais pas, je pourrais me retrouver avec un fichier avec un.csvextension, mais dont le contenu n'est pas séparé par des virgules. - La deuxième ligne est l'endroit où nous utilisons le
SPOOLcommande pour spécifier où le fichier de sortie sera écrit. Assurez-vous de modifier le/Users/barney/data/countries.csvpièce à un emplacement sur votre système. - Sur la troisième ligne, j'ai exécuté la requête SQL - les résultats pour lesquels j'exporte. Dans ce cas, j'ai exporté l'ensemble des
countriestableau. - Ensuite, j'ai tourné
SPOOLéteint. - Enfin, j'ai terminé en définissant le
SQLFORMATretour àansiconsole(ce que j'utilisais avant de le définir surcsv).
Voici à quoi ressemble le fichier résultant :
"COUNTRY_ID","COUNTRY_NAME","REGION_ID""AR","Argentine",2"AU","Australie",3"BE","Belgique",1"BR","Brésil",2 "CA","Canada",2"CH","Suisse",1"CN","Chine",3"DE","Allemagne",1"DK","Danemark",1"EG"," Égypte",4"FR","France",1"HK","HongKong",3"IL","Israël",4"IN","Inde",3"IT","Italie",1" JP","Japon",3"KW","Koweït",4"MX","Mexique",2"NG","Nigéria",4"NL","Pays-Bas",1"SG","Singapour ",3"UK","Royaume-Uni",1"US","États-Unis d'Amérique",2"ZM","Zambie",4"ZW","Zimbabwe",425 lignes sélectionnées.
Supprimer les en-têtes de colonne
Vous pouvez supprimer les en-têtes de colonne avec 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 Résultat :
"AR","Argentine",2"AU","Australie",3"BE","Belgique",1"BR","Brésil",2"CA","Canada",2"CH ","Suisse",1"CN","Chine",3"DE","Allemagne",1"DK","Danemark",1"EG","Egypte",4"FR","France" ,1"HK","HongKong",3"IL","Israël",4"IN","Inde",3"IT","Italie",1"JP","Japon",3"KW" ,"Koweït",4"MX","Mexique",2"NG","Nigéria",4"NL","Pays-Bas",1"SG","Singapour",3"UK","Royaume-Uni" ,1"US","États-Unis d'Amérique",2"ZM","Zambie",4"ZW","Zimbabwe",425 lignes sélectionnées.
Dans ce cas, j'ai tourné HEADINGS après avoir exporté le fichier.
Supprimer les commentaires
Vous pouvez supprimer le X rows selected avec 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 Résultat :
"AR","Argentine",2"AU","Australie",3"BE","Belgique",1"BR","Brésil",2"CA","Canada",2"CH ","Suisse",1"CN","Chine",3"DE","Allemagne",1"DK","Danemark",1"EG","Egypte",4"FR","France" ,1"HK","HongKong",3"IL","Israël",4"IN","Inde",3"IT","Italie",1"JP","Japon",3"KW" ,"Koweït",4"MX","Mexique",2"NG","Nigéria",4"NL","Pays-Bas",1"SG","Singapour",3"UK","Royaume-Uni" ,1"US","États-Unis d'Amérique",2"ZM","Zambie",4"ZW","Zimbabwe",4
Ici, j'ai activé FEEDBACK de nouveau après l'exportation du fichier.
Tableaux multiples
Dans cet exemple, j'exporte les résultats d'une requête un peu plus complexe qui joint deux tables :
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 Fichier résultant :
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"Ajouter les résultats
Par défaut,
SPOOLutiliseREPLACE, qui remplace le fichier s'il existe déjà.Cependant, nous pouvons utiliser le
APPENDargument pour ajouter les résultats au fichier.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 onFichier résultant :
145,"John","Russell",14000,"Sales Manager"146,"Karen","Partners",13500,"Sales Manager"201,"Michael","Hartstein",13000,"Marketing Manager "147,"Alberto","Errazuriz",12000,"Responsable des ventes"205,"Shelley","Higgins",12000,"Responsable de la comptabilité"108,"Nancy","Greenberg",12000,"Responsable des finances"168 ,"Lisa","Ozer",11500,"Représentante des ventes"174,"Ellen","Abel",11000,"Représentante des ventes"114,"Den","Raphaely",11000,"Responsable des achats"148," Gérald","Cambrault",11000,"Responsable des ventes"Cet exemple a ajouté les résultats au fichier qui a été créé (et rempli) dans l'exemple précédent.