Pour transférer un résultat de requête dans un fichier CSV, il faut procéder en deux étapes.
É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 (||) ;
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.
-- 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
-- exécution du script /tmp/exportCsv.sql
@/tmp/exportCsv.sql
Il est indispensable de procéder en deux temps : l'exécution directe de /tmp/exportCsv.sql
ne donnera pas un formatage correct.