17 janvier 2022

Produire une sortie CSV avec SQLPlus Oracle

Ci dessous une opération très simple pour obtenir une sortie SQL de type CSV ... Il suffit de demander à Oracle de le faire pour vous :

set head on
set echo off
set markup csv on delimiter , quote on
select NORME1,NORME2,DATDSN,DATGIP from ZDFS join ZD00 on ZDFS.NUDOSS=ZD00.NUDOSS where CDSTCO='U3N' and CDCODE='000'

"NORME1","NORME2","DATDSN","DATGIP"
"DP21V01 ","DP22V01 ","2022-01-01-00.00.00","2022-01-25-00.00.00"

A noter : 

  • SET MARKUP CSV est disponible a compter de Oracle 12
  • Pour les champs de type CHAR les espaces de fin restent significatifs (par exemple en fin de "DP21V01 "). Pour ne pas les récupérer dans votre extraction, utilisez la fonction rtrim.

plus d'informations avec :
https://docs.oracle.com/.../generating-reports

et
https://docs.oracle.com/.../SET-system-variable

 

4 commentaires:

  1. Je lis tous vos publication merci de publier beaucoup plus souvent vos astuces et découvertes
    Bon courage collègue

    RépondreSupprimer
  2. Avec tout mon respect pour l'énorme travail que tu as fait, j'ai une remarque et j'espère que tu la prendras avec grand coeur, j'ai du mal à me concentrer dans le blog à cause des couleurs, peux-tu s'il te plaît changer le thème avec des couleurs opposées pour que nous puissions le lire et nous concentrer mieux ? merci.

    RépondreSupprimer
    Réponses
    1. Je suis assez surpris - je ne pense pas avoir une charte exubérante ... peux-tu préciser ? Au pire il faudra dégoter d'occasion un vieux téléviseur noir et blanc ;-)

      Supprimer
  3. Merci pour l'astuce mister D.
    Cela diminue le nombre de manipulations par rapport à ce que je faisais jusqu'ici :
    pour générer un format csv, j'utilise l'instruction set colsep ';'
    et on obtient ceci avec ta requête :
    NORME1 ;NORME2 ;DATDSN ;DATGIP
    --------;--------;-------------------;-------------------
    DP21V01 ;DP22V01 ;2022-01-01-00.00.00;2022-01-21-00.00.00

    Pour la charte graphique : pour le menu à droite de cette page, les caractères bleus et blancs sur le fond de l'image bleue clair sont peu visibles

    RépondreSupprimer