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[1] pour l'exploiter dans un contexte extérieur à Oracle. SQL*Plus est une solution simple pour y parvenir ( Oracle 9i[2], 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

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
1
-- exécution du script /tmp/exportCsv.sql
2
@/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