bonjour à tous, j'ai besoin de générer des fichiers csv à partir d'une extraction sql, en gros un fichier csv doit être créé pour chaque ligne de la table et porter le nom d'un des champs...quelqu'un pourrait il me donner une piste en pl sql ? merci
Version imprimable
bonjour à tous, j'ai besoin de générer des fichiers csv à partir d'une extraction sql, en gros un fichier csv doit être créé pour chaque ligne de la table et porter le nom d'un des champs...quelqu'un pourrait il me donner une piste en pl sql ? merci
en sql : spool
Le format CSV, si je ne me trompe pas, c'est juste que les champs sont encapsulés par des " et séparés par des ,
Donc, tu peux faire un spool SQL en faisant juste
En PLSQL,c'est la même chose mais en utilisant les fichiers et les fonctions du package UTL_FILECode:
1
2
3
4
5 SELECT '"' || col1 || '","' || col2 || '","' || col3 || '","' || .... colxx || '"' FROM ... WHERE ...
Petite astuce à 2 sous pour avoir un spool propre depuis SQL, il faut taper
set heading off
set pages 0
set lines XX
où XX est la taille en caractères maxi d'une ligne + 1
Si par exemple tu ramène col1, col2, col3 qui sont des varchar2(10), ton XX vaudra alors (1 + 10 + 3 + 10 + 3 + 10 + 1) + 1 = 39 car tu as "valcol1","valcol2","valcol3" et tu ajoutes 1
En fait, je me complique la vie, un simple SET COLSEP ';' suffit et un spool
SPOOL, c'est bien en SQL, mais ça ne marche pas en PL/SQL, où il convient d'utiliser le package Oracle UTL_FILE.
Il y a plein d'exemples dans les cours et tutoriels.