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 Oracle Discussion :

Spool, problème d'espace entre les colonnes


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Spool, problème d'espace entre les colonnes
    Bonjour à tous.

    Je fais des exports d'une base oracle 10g via le fichier .sql suivant que j'execute dans un scipt shell:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    set echo off;
    set space 0;
    set newpage 0;
    set pagesize 0;
    set feed off;
    set head off;
    set trimspool on;
    set verify off;
    set term off;
    set head off;
    spool data/ref_ext_permis_export.csv
    select TYPE_PERMIS||';'||CODE from  ref_ext_permis;
    spool off ;
    Tout se passe niquel ,j'ai bien les données que je veux, sans la requete, sans les infos de connexions, bref, mon fichier est propore...

    Par contre, je spécifie le set space à 0 mais je me retrouve quand même avec des espaces entre mes champs... J'ai tenté de le mettre à 5 pour voir la diff et rien n'a changé.. comme s'il n'était pas pris en compte...

    Voila le résultat...

    Quelqu'un a deja rencontré le problème ?

    Merci d'avance !

    2SP ;A
    A ;C
    A1 ;C
    B ;C
    C ;C
    C1 ;C
    CA1 ;A
    CAM ;A
    CYC ;A
    D ;C
    E ;C
    ENT ;A
    F ;C
    FAH ;A
    FSH ;A
    MOT ;A
    PL ;A
    PL1 ;A
    SOC ;A
    TC ;A
    TRI ;A

  2. #2
    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
    set space est obsolete. comme tu fais avec ||, rien ne sert de gérer colsep. Essaye peut-être RTRIM(TYPE_PERMIS) si type_permis contient des espaces

  3. #3
    Membre régulier Avatar de pseudobidon57
    Inscrit en
    Octobre 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 133
    Points : 101
    Points
    101
    Par défaut
    oui ou il y a peut etre une solution a trouver avec translate.. mais je ne suis pas sur que l'on puisse convertir un character en null.

  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
    Citation Envoyé par pseudobidon57
    mais je ne suis pas sur que l'on puisse convertir un character en null.
    ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    translate (col, 'x ','x')
    ou plutôt

  5. #5
    Membre régulier Avatar de pseudobidon57
    Inscrit en
    Octobre 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 133
    Points : 101
    Points
    101
    Par défaut
    oui pardon replace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select product_id, replace(product_id, '1', '') from product
    j'ai essaye ca marche..

  6. #6
    Membre régulier Avatar de pseudobidon57
    Inscrit en
    Octobre 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 133
    Points : 101
    Points
    101
    Par défaut
    Une solution pour ton probleme serait donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    set echo off;
    set space 0;
    set newpage 0;
    set pagesize 0;
    set feed off;
    set head off;
    set trimspool on;
    set verify off;
    set term off;
    set head off;
    spool data/ref_ext_permis_export.csv
    select replace(TYPE_PERMIS, ' ', '')||';'||CODE from  ref_ext_permis;
    spool off ;
    Merci de mettre resolu si ton probleme l'est ..

  7. #7
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut Utilisez la fonction trim
    Une autre consiste à utiliser la fonction trim()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    set echo off;
    set space 0;
    set newpage 0;
    set pagesize 0;
    set feed off;
    set head off;
    set trimspool on;
    set verify off;
    set term off;
    set head off;
    spool data/ref_ext_permis_export.csv
    select trim(TYPE_PERMIS)||';'||trim(CODE) from  ref_ext_permis;
    spool off ;

  8. #8
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut merci
    Merci à tous pour ces réponses...
    J'ai été absent quelques jours donc j'avais pas pris le temps de faire un saut sur le forum... Je vais tester vos solutions...

    Tiens, d'ailleurs, tant que je poset un msg...

    Je voudrai afficher les entetes de colonnes dans mes fichiers CSV mais en mettant l'option on ca ne marche pas.. Même si j'elève le ...

    Ca vous dit quelques chose ?


    merci en tous cas pour votre soutien.


  9. #9
    Membre régulier Avatar de pseudobidon57
    Inscrit en
    Octobre 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 133
    Points : 101
    Points
    101
    Par défaut
    essaye ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    set newpage 0
    set heading on
    set pagesize 50000
    si ton select retourne plus de 50000 lignes, alors les entete de colonne apparaitron a la 50001 ieme ligne..
    il y a peut etre une solution plus elegante, mais je la connais pas

  10. #10
    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
     
    set newp none pages 0 head on emb on

  11. #11
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut mouais...
    En fait j'ai testé la solution de laurent et je me retrouve avec la liste des champs formattés tel que je les ai passé dans ma requete...

    voici le résultat:

    TRIM(CODE)||';'||TRIM(LIBELLE)||';'||TRIM(ABREGE)
    --------------------------------------------------------------------------------
    1;Administration des ventes;Administration des ventes
    2;Etc....
    C'est pas exactement ce que je souhaitais... Ce qui m'interesse c'est d'avoir le nom des colonnes en entete.... Est-ce possible ?

    merki !!

  12. #12
    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
     
    select trim(TYPE_PERMIS)||';'||trim(CODE) 
      as "TYPE_PERMIS;CODE" 
    from  ref_ext_permis;

  13. #13
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut alias trop long
    Merci laurent pour ta solution, mais en fait, je rencontre cerains problèmes car apparemment la longueur d'un alias est limitée...

    du coup quznd ma table est du type :
    set newp none pages 0 head on emb on
    spool &1
    select trim(DATE_ECRIT)
    ||';'||trim(CLOTURE_INSCRIPTION)
    ||';'||trim(LIMITE_SAISIE)
    ||';'||trim(CONSTITUTION_DOSSIER)
    ||';'||trim(ENVOI_DOSSIER)
    ||';'||trim(COM_MEDIATION)
    ||';'||trim(DEBUT_COM_EXAM)
    ||';'||trim(FIN_COM_EXAM)
    ||';'||trim(DECISION_MODALITE)
    ||';'||trim(JURY)
    ||';'||trim(ENVOI_CONVOCATION)
    ||';'||trim(DEBUT_ORAL)
    ||';'||trim(FIN_ORAL)
    ||';'||trim(FIN)
    ||';'||trim(NB_EPREUVES)
    ||';'||trim(VALIDITE_SESSION)
    ||';'||trim(SEUIL_PRE)
    ||';'||trim(SEUIL_ADMISSIBLITE)
    ||';'||trim(SEUIL_ADMISSION)
    ||';'||trim(COMMENTAIRE)
    ||';'||trim(EPREUVE_ECRITE)
    ||';'||trim(DATE_ARCHIVAGE)
    ||';'||trim(NB_PHASES)
    ||';'||trim(NUM_DECISION)
    ||';'||trim(TYPE_ADMISSION)
    ||';'||trim(FIN_DECISION_OUVERTURE)
    ||';'||trim(LIBELLE_SESSION) as "DATE_ECRIT;CLOTURE_INSCRIPTION;LIMITE_SAISIE;CONSTITUTION_DOSSIER;ENVOI_DOSSIER;COM_MEDIATION;DEBUT_COM_EXAM;FIN_COM_EXAM;DECISION_MODALITE;JURY;ENVOI_CONVOCATION;DEBUT_ORAL;FIN_ORAL;FIN;NB_EPREUVES;VALIDITE_SESSION;SEUIL_PRE;SEUIL_ADMISSIBLITE;SEUIL_ADMISSION;COMMENTAIRE;EPREUVE_ECRITE;DATE_ARCHIVAGE;NB_PHASES;NUM_DECISION;TYPE_ADMISSION;FIN_DECISION_OUVERTURE;LIBELLE_SESSION" from SESS;
    spool off ;
    Beh, je prends une erreur dans mon fichier en sortie...

  14. #14
    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
     
    set head off
    PROMPT DATE_ECRIT;CLOTURE_INSCRIPTION
    select rtrim(DATE_ECRIT)
      ||';'||rtrim(CLOTURE_INSCRIPTION)
    from SESS;

  15. #15
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut merci a tous
    c'est bon, tout fonctionne convenablement, merci à tous... c'était tres aimable de votre part...

  16. #16
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Octobre 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1
    Points : 0
    Points
    0
    Par défaut SAUT DE LIGNE
    Bonjour,

    comment retirer les sauts de lignes dans le résultat d'une requête dans un fichier en sortie avec le spool.

    Exemple résultat:

    A;B;C;D
    E;F;G;H

    mais pas:

    A;B;C;D

    E;F;G;H

    Merci d'avance pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Spool : problème d'espace dans les champs spoolés
    Par Flint dans le forum Sql*Plus
    Réponses: 4
    Dernier message: 17/06/2010, 17h01
  2. Réponses: 2
    Dernier message: 07/05/2010, 15h38
  3. espacement entre les colonnes
    Par Lcf.vs dans le forum Word
    Réponses: 2
    Dernier message: 09/08/2008, 16h19
  4. Problème de menu: espaces entre les images
    Par nmathon dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 30/05/2006, 14h16
  5. [HTML & CSS] Problème d'espace entre les <li>
    Par Yoshidu62 dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 17/05/2006, 18h53

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