Création d'un fichier CSV avec SQL*Plus

Il est parfois utile de transférer le résultat d'une requête vers un fichier CSV pour l'exploiter dans un contexte extérieur à Oracle. SQL*Plus est une solution simple pour y parvenir ( Oracle 9i, p.213).

Méthode

Pour transférer un résultat de requête dans un fichier CSV, il faut procéder en deux étapes.

  1. Écrire un script qui :

    • formate la sortie de façon adéquate (SET) ;

    • oriente le résultat vers un fichier (SPOOL).

    • encadre les données non numériques par des guillemets et sépare les colonnes par des points-virgules (||) ;

  2. Appeler ce script pour obtenir le fichier CSV.

La sortie standard du client pourra être désactivée si le flux de données est important.

Exemple

CTRL+C pour copier, CTRL+V pour coller
1
-- script /tmp/exportCsv.sql
2
SET HEADING OFF
3
SET FEEDBACK OFF
4
SET ECHO OFF
5
SET PAGESIZE 0
6
SPOOL /tmp/out.dat
7
SELECT '"' ||  pkFamilleDefaut || '";"' || libelle || '"' FROM tFamilleDefaut ;
8
SPOOL OFF
-- script /tmp/exportCsv.sql
SET HEADING OFF
SET FEEDBACK OFF
SET ECHO OFF
SET PAGESIZE 0
SPOOL /tmp/out.dat
SELECT '"' ||  pkFamilleDefaut || '";"' || libelle || '"' FROM tFamilleDefaut ;
SPOOL OFF
CTRL+C pour copier, CTRL+V pour coller
1
-- exécution du script /tmp/exportCsv.sql
2
@/tmp/exportCsv.sql
-- exécution du script /tmp/exportCsv.sql
@/tmp/exportCsv.sql

Attention

Il est indispensable de procéder en deux temps : l'exécution directe de /tmp/exportCsv.sql ne donnera pas un formatage correct.

Rappel