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

Informix Discussion :

Génération d'un spool depuis Informix/Dbaccess


Sujet :

Informix

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 45
    Points : 26
    Points
    26
    Par défaut Génération d'un spool depuis Informix/Dbaccess
    Bonjour

    Je souhaiterai réaliser une chose qui me paraît très simple mais pour laquelle je ne trouve pas de solution (de par sans doute mon peu d'expérience sous Informix et Dbaccess).

    Mon but : obtenir le spool d'une table, incluant la liste des rubriques dans la première ligne.

    En utilisant certaines infos découvertes dans les forums de Developpez.com, j'ai créé le script suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    db=dvi
    dbaccess <<EOF
    DATABASE ${db} ;
     
    output to B64_a2741.txt 
     
    select "a2741", * 
    from a2741 ;
     
    EOF
    Ce script me fournit le résultat suivant :

    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
     
    (constant)   a2741
    np_jmal      B64-PJMAL1001000
    dcrep_j      20080102
    cmnelotd_r   DR
    dtrtlotd_r   20080102
    nordlotd_r   1
    ndptcpud_r   082
    ntitrec      81111111000100
    cgrg_ges     1
    ndpt_ges     031
    netsgeo_fss  02000547
    netsgeo      02000547
    netsjur_fss  02000547
    netsjur      02000547
    nlotpds      581
    cntuopenor   1
    dcrelot      20071001
    dentets      20080101
    dliqges      20080105
    nmdttpg      123456789012345
    vp_odmdpds   1234.56
    vp_cdmdpds   78.09
    vdmdpds      1312.65
    vpaypds      1312.65
    bemipmt      20080106
    cdcsagc      0
    ddcscpt      20080107
    ctyppmtcpu   PR
    lfil_sql     
    vsrl_a2741   9937
     
    ...
    Or, je voudrais obtenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    (constant);np_jmal;dcrep_j;cmnelotd_r;dtrtlotd_r;nordlotd_r;ndptcpud_r;ntitrec;cgrg_ges;ndpt_ges;netsgeo_fss;netsgeo;netsjur_fss;netsjur;nlotpds;cntuopenor;dcrelot;dentets;dliqges;nmdttpg;vp_odmdpds;vp_cdmdpds;vdmdpds;vpaypds;bemipmt;cdcsagc;ddcscpt;ctyppmtcpu;lfil_sql;vsrl_a2741
    a2741;B64-PJMAL1001000;20080102;DR;20080102;1;082;81111111000100.0;1;031;02000547;02000547;02000547;02000547;581;1;20071001;20080101;20080105;123456789012345.0;1234.56;78.09;1312.65;1312.65;20080106;0;20080107;PR;;9937;
    ...
    Pourriez-vous m'indiquer les options proposées par dbacces ou me fournir un exemple de script qui me permettrait d'obtenir ce second format de spool ?

    Merci par avance pour vos informations.

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 148
    Points : 28 113
    Points
    28 113
    Par défaut
    Bonjour,

    Je pense qu'une solution serait d'utiliser unload, qui te permet de formater la sortie sous la forme que tu attends (ou presque, puisque ca ne mets pas de ';' mais des '|').

    Avec ton code, sauf erreur, cela donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    db=dvi
    dbaccess <<EOF
    DATABASE ${db} ;
     
    output TO B64_a2741.txt 
     
    UNLOAD TO /dev/stdout
    SELECT "a2741", * 
    FROM a2741 ;
     
    EOF
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Bonjour

    Merci pour ta réponse.

    J'ai effectué le test (voir code ci-dessous) ... Malheureusement, la ligne d'entête n'apparaît pas. Existe-t-il une option d'UNLOAD permettant de récupérer les noms des rubriques en première ligne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    db=dvi
    dbaccess <<EOF
    DATABASE ${db} ;
     
    UNLOAD to B64_a2741_tmp.txt 
     
    select "a2741", * 
    from a2741 ;
     
    EOF
     
    sed s/'|'/';'/g B64_a2741_tmp.txt > B64_a2741.txt

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 45
    Points : 26
    Points
    26
    Par défaut Solution ...
    Bon, j'avoue, c'est pas vraiment l'idéal (je pensais trouver une solution plus directe) ... Mais ça me donne le résultat attendu.

    1/ Spool des données
    2/ Spool des rubriques depuis systables et syscolumns
    3/ Mise en colonne du spool des rubriques
    4/ Concaténation du spool des rubriques et du spool des données

    Voici le script :

    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
     
    db=dvi
    dbaccess <<F_DATA
    DATABASE ${db} ;
     
    UNLOAD to B64_a2741_tmp.txt DELIMITER ";"
     
    select * 
    from a2741 ;
     
    F_DATA
     
    dbaccess <<F_RUB
    DATABASE ${db} ;
     
    UNLOAD to B64_a2741_rubriques_tmp.txt DELIMITER ";"
     
    select syscolumns.colname 
    from systables, syscolumns
    where systables.tabid = syscolumns.tabid
      and systables.tabname = "a2741"
     
    F_RUB
     
    cat B64_a2741_rubriques_tmp.txt | tr -d "\n" > B64_a2741_rubriques.txt
     
    cat B64_a2741_rubriques.txt B64_a2741_tmp.txt > B64_a2741.txt
     
    rm B64_a2741_tmp.txt
    rm B64_a2741_rubriques.txt
    rm B64_a2741_rubriques_tmp.txt
    Merci à gangsoleil, sur le Forum, et à Alain, par mail, pour l'aide apportée.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/02/2009, 12h29
  2. Génération de code .NET depuis UML
    Par pierre.ricci dans le forum Visio
    Réponses: 1
    Dernier message: 21/09/2007, 15h45
  3. Génération de fichier PDF depuis une page html
    Par leo_ip dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/06/2007, 13h51
  4. Comment automatiser la génération de graphs GraphViz depuis VB6
    Par numfard dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 10/04/2007, 11h10
  5. Extraire depuis Informix 9
    Par VinZent dans le forum Informix
    Réponses: 6
    Dernier message: 26/06/2006, 11h08

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