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] Probleme de retour chariot en trop dans le fichier spoolé


Sujet :

Sql*Plus Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut [SQL PLUS] Probleme de retour chariot en trop dans le fichier spoolé
    Bonjour.

    J'ai un problème que je n'arrive pas à résoudre. J'ai cherché sur le forum et n'ai pas trouvé de solution viable.

    Je récupère des données depuis une table pour les écrire dans un fichier.
    Etant donné que ces champs font tous 4000 caractères, je ne peux les concaténer à l'aide de ||. Je les récupère donc séparément.

    Mon problème vient à partir de là. Entre chaque colonne, j'ai un retour à la ligne en trop.
    Etant donné que les données sont du Html, je ne peux pas me permettre de laisser ça comme ça.

    J'ai essayé de sélectionner les champs dans la même requête ou séparément, rien n'y fait. J'ai rajouté le COLSEP, ça ne marche pas. Le RECSEP OFF m'a permis d'enlever une ligne que j'avais en trop (2 retours à la ligne à la base).

    Voici le code en question :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    spool &2
     
    SET PAGES 0
    SET ECHO OFF
    SET NEWPAGE 0
    SET SPACE 0
    SET LINESIZE 3000
    SET PAGESIZE 0
    SET VERIFY OFF
    SET FEEDBACK OFF
    SET HEADING OFF
    SET TERMOUT OFF
    SET TRIMSPOOL ON
    SET COLSEP ''
    SET RECSEP OFF
     
    ...
     
    SELECT 'blablabla'||CHAMP FROM TABLE WHERE CLE='&1';
     
    prompt blablabla=;
     
    SELECT replace(CHAMP_INIT,chr(13),'') FROM TABLE_INIT WHERE CLE='&1';
     
    SELECT replace(CHAMP_1,chr(13),'') FROM TABLE_G, TABLE WHERE CHAMP_G=CHAMP AND CLE='&1';
     
    SELECT replace(CHAMP_2,chr(13),'') FROM TABLE_G, TABLE WHERE CHAMP_G=CHAMP AND CLE='&1';
     
    SELECT replace(CHAMP_3,chr(13),'') FROM TABLE WHERE CLE='&1';
     
    SELECT replace(CHAMP_4,chr(13),'') FROM TABLE WHERE CLE='&1';
     
    SELECT replace(CHAMP_5,chr(13),'') FROM TABLE WHERE CLE='&1';
     
    SELECT replace(CHAMP_6,chr(13),'') FROM TABLE_G, TABLE WHERE CHAMP_G=CHAMP AND CLE='&1';
     
    spool off;
    exit;
    Voilà, j'espère que je n'ai rien oublié.

    Merci d'avance pour vos réponses,

    Yo.

  2. #2
    Membre éprouvé Avatar de 13thFloor
    Homme Profil pro
    DBA Oracle freelance
    Inscrit en
    Janvier 2005
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : DBA Oracle freelance

    Informations forums :
    Inscription : Janvier 2005
    Messages : 670
    Points : 945
    Points
    945
    Par défaut
    SET MARKUP HTML ON ne t'aiderait pas ?

    Si le contenu d'une colonne est "wrappé sur plusieurs lignes, cela irait-il ?

    exemple : col champ_1 for a200 wrap

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Je ne comprend pas très bien l'intérêt :s

    Il va me rajouter des balises un peu partout si je comprend bien la chose. Et donc, je ne vois pas comment cela pourrait m'aider mais surtout (chose que j'ai oubliée de préciser et je m'en excuse) ce fichier est ensuite parsé et je ne peux donc pas passer des lignes à ma guise

    Par contre, je veux bien comprendre ce que vous aviez en tête

  4. #4
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    SET LINESIZE 3000, c'est pas assez pour afficher 4000 caractères sur une seule ligne.
    Tu peux mettre très grand car avec trimspool on les blancs de fin de lignes sont supprimés.

    Cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  5. #5
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    SET LINESIZE 3000, c'est pas assez pour afficher 4000 caractères sur une seule ligne.
    Tu peux mettre très grand car avec trimspool on les blancs de fin de lignes sont supprimés.

    Bonsoir,

    En fait, les colonnes de 4000 caractères récupérées ne sont pas sur une seule ligne en base et elles sont interprétées de la même manière qu'en base par le sql plus (ie plusieurs lignes) donc le linesize ne prend pas effet ^^.

    J'avais essayé de mettre à 10000 par précaution même si j'étais persuadé que ça n'allait pas marcher et ça n'a pas marché =P.

    Merci quand même =)

  6. #6
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Etant donné que je n'ai pas trouvé de solution via le spool, j'ai finalement recodé le tout en PL/SQL avec des UTL_FILE et les méthodes PUT et PUT_LINE.

Discussions similaires

  1. Probleme de retour chariot avec le module WriteExcel
    Par Jim_Nastiq dans le forum Modules
    Réponses: 3
    Dernier message: 20/08/2008, 15h23
  2. [SQL Loader] problème de retour chariot
    Par euphorix dans le forum SQL
    Réponses: 3
    Dernier message: 31/08/2006, 05h37
  3. Réponses: 3
    Dernier message: 23/08/2006, 16h30
  4. probleme de retour chariot
    Par BernardT dans le forum ASP
    Réponses: 3
    Dernier message: 01/07/2006, 19h08
  5. [9i][SQL Plus] Probleme d'affichage ?
    Par sali dans le forum Oracle
    Réponses: 3
    Dernier message: 30/10/2005, 09h46

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