IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sql*Plus Oracle Discussion :

SQL*Plus et formattage des données de sortie


Sujet :

Sql*Plus Oracle

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 135
    Points : 139
    Points
    139
    Par défaut SQL*Plus et formattage des données de sortie
    Bonjour,

    J'ai recherché un peu partout, mais je n'ai pas trouvé la solution à ce problème.

    Je cherche à faire une extraction sur une table avec un DOS Batch qui lance SQL*Plus.

    Voici le fichier qui est lancer dans SQL*Plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    set echo off
    set newpage 0
    set pagesize 0
    set feedback off
    set heading on
    set underline off
    set trimspool on
    set linesize 500
    set colsep ';'       
    set null ''                        
    set termout off         
    set verify off  
    set trimout on
    set embedded on
     
    spool monfichier.csv
     
    select var1, var2, var3, var4
    from maTable
     
    spool off
     
    exit;
    Le resultat est le suivant dans monfichier.csv

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var1    ;var2;var3   ;var4
    abc     ;thrd;sdg    ;sdfgs
    defg    ;thrd;sdg    ;sdfgs
    hijeklmn;thrd;sdg    ;sdfgs
    Mon problème est que je souhaite que ma sorie soit formatter de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var1;var2;var3;var4
    abc;thrd;sdg;sdfgs
    defg;thrd;sdg;sdfgs
    hijeklmn;thrd;sdg;sdfgs
    et non pas en fonction de la définition de la colonne.

    Merci d'avance de votre aide.

  2. #2
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 135
    Points : 139
    Points
    139
    Par défaut
    C'est ce que j'ai fait et je n'ai pas trouver la solution pour que l'espacement des champs ne soit pas constant.

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select var1 ||';'||var2||';'||var3||';'||var4
    from maTable

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 135
    Points : 139
    Points
    139
    Par défaut
    Oui, cette solution là, je l'avais trouvé, mais elle ne me convient pas particulièrement en terme de maintenabilité. Si aucune autre solution n'existe, je m'en contenterais, mais je préfèrerais trouver une solution plus propre.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 7
    Points : 12
    Points
    12
    Par défaut Si tu trouves au solution ... je prends !
    Bonjour,

    Je me trouve face au même problème ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    SET TRIMOUT   ON
    SET TRIMSPOOL ON
    SET COLSEP ';'
     
    COLUMN X1  FORMAT A12
    COLUMN X2  FORMAT A8
     
    SELECT
      REC_KEY X1,
      OPEN_DATE X2,
      UPDATE_DATE X2,
      EXPIRY_DATE X2
    FROM
     MA_TABLE
    Et en sortie, j'obtiens ça ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ID17241     ;  20060530;  20071105;  20040527
    ID29923     ;  20051206;  20071025;  20080313
    Ce qui ne me plaît pas c'est les deux espaces avant les dates ... je voulais 8 caractères et j'en ai 10 ... à quoi est-ce du ?

    Alors effectivement la solution suivante fonctionne mais je me demande alors à quoi sert la commande COLUMN NAME FORMAT ???

  7. #7
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SQL> set trim on trims on colsep ";"
    SQL> col x1 for a12
    SQL> col x2 for a8
    SQL> select 'ID17241' x1, '20060530' x2, '20071105' x2, '20040527' x2 
         from dual;
    X1          ;X2      ;X2      ;X2
    ------------;--------;--------;--------
    ID17241     ;20060530;20071105;20040527

  8. #8
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    merci de préciser les outils + version

Discussions similaires

  1. [SQL Server 2005] Importer des données XML
    Par ni0urk dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 22/05/2008, 10h06
  2. Réponses: 6
    Dernier message: 11/07/2006, 17h09
  3. [SQL Server 2005] Valeur des données vides
    Par davasm dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/06/2006, 10h38
  4. [SQL server] Comment Fusionner des données dans une requête
    Par MoTUmBo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/07/2005, 16h24
  5. Réponses: 5
    Dernier message: 13/07/2005, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo