Alimenter un fichier CSV via AS400

vp29 -  
 J.M.ARAB -
Bonjour,

Je suis une pure AS400tiste (développement en RPG, base de données DB2), et je dois créer et alimenter un fichier CSV à partir d'une base de données AS400. Quelqu'un peut-il m'aider ? Suffit-il de créer un fichier dans la base AS400 avec des champs séparés par une vigule ou point vigule ?
Merci
Configuration: Windows XP
Internet Explorer 7.0

6 réponses

  1. wb
     
    Bonjour à tous,

    Merci à VP29,
    La commande :
    CPYTOIMPF FROMFILE(WILLIAM/WBCSV) TOSTMF('/paseo/wbcsv.CSV') MBROPT(*REPL
    ACE) STMFCODPAG(*STDASCII) RCDDLM(*CRLF) STRDLM(*NONE) RMVBLANK(*BOTH) FL
    DDLM(';') DECPNT(*COMMA)

    fonctionne partiellement (je suis en V5r4M0) car la suppression des blancs dans les différents champs ne se fait pas.
    ************Beginning of data**************
    10;01 ;CA ;1 ;43 ;a ;25 ;1200 ;SL ;20090417;162000
    ************End of Data********************
    Au final j'ai bien dans l'IFS (créé en automatique par la commande) le fichier résultat wbcsv.csv.
    Pour info, il faut que le fichier d'origine soit un fichier DB2 avec noms de zones.
    J'avais créé à tort un fichier sans zones et je n'avais qu'une zone au résultat dans le .CSV.
    Via l'explorateur window j'ouvre bien un fichier excel, donc OK pour cela. Plus de prog RPG à faire

    Il me reste à faire et je ne sais pas encore comment :

    Copier ce fichier depuis l'IFS dans un repertoire PC d'un utilisateur donné.
    Bien sur en automatique du style :
    Si fichier commence par WB*.* je le mets sur le PC de WB.
    Si vous avez des infos, je serai preneur.
    Par avance Merci.
    WB.
    5
    1. J.M.ARAB
       
      Il faut aller sur explorateur de fichier, sélectionner connecter un lecteur réseau, donner une lettre à ce lecteur, renseigner le chemin d'accès par \\nom as400 ou son adresse IP \root\répertoireIFS\ ou se trouve votre fichier ensuite vous le faite glisser sur le réertoire de voutre PC ou d'un autre du réseau.
      Bon courage !
      0
  2. VP29 Messages postés 3 Statut Membre 1
     
    pourquoi ne pas mettre à jour tous les fichiers .csv dans un dossier commun sur un serveur ?
    Et gérer les droits utilisateurs par fichier ensuite ?

    Enfin ça dépend de ce que tu souhaites faire
    1
  3. Ludo
     
    Bonjour,

    En principe, je créé le fichier de manière "classique" sur l'AS400 puis j'utilise un CL pour le transférer sur l'IFS avec la commande CPYTOIMPF.

    Ex: transfert du fichier TOTO

    CPYTOIMPF FROMFILE(bibliotheque_AS/TOTO) TOSTMF('QDLS/repertoire/TOTO.CSV') MBROPT(*REPLACE) STMFCODPAG(*STMF) RCDDLM(*CRLF) DTAFMT(*DLM) STRDLM(*NONE) FLDDLM(';')

    Cdlt,
    0
    1. vp29
       
      Bonjour
      Merci pour votre réponse.
      Le problème c'est que la commande CPYTOIMPF ne convertit pas l’EBCDIC en ASCII, ce qui donne un fichier illisible
      Cordialement
      0
      1. wb > vp29
         
        Bonjour,
        J'ai le même problème et je me tâte pour savoir si je vais écrire un programme pour générer ce fichier en .CSV.
        Bonne continuation.
        WB.
        0
      2. VP29 Messages postés 3 Statut Membre 1 > wb
         
        Bonjour

        J'ai utilisé la fonction AS400 CPYTOIMPF qui fonctionne très bien

        Cdlt
        0
  4. othanga
     
    Bonjour,

    le CSV doit servir sur quelle plateforme ? Si c'est pour Windows, autant laisser le travail à Client Access et son pilote ODBC

    Personnellement, je me sers d'ADO (depuis un WinXP) pour me connecter à la base, soumettre une requête pas trop compliquée et lire le résultat ligne par ligne pour le stocker dans un fichier .CSV
    normalement, le séparateur de colonne dans le .CSV est la virgule et les chaînes sont délimitées par des guillemets.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. VP29 Messages postés 3 Statut Membre 1
     
    Voici ma commande que j'ai placée dans un pgm CL AS400

    CPYTOIMPF FROMFILE(IR6_1SP/ACTECR) TOSTMF('/IRIS +
    ACTIM/ACTECR.CSV') MBROPT(*REPLACE) +
    STMFCODPAG(*STDASCII) RCDDLM(*CRLF) +
    STRDLM(*NONE) FLDDLM(';') DECPNT(*COMMA)

    ACTECR est mon fichier dans la base DB2 en amont, et je crée le fichier ACTECR.CSV sous l'IFS
    Le séparateur de champs est le ;
    et le séparateur de décimales est la virgule
    0
  7. wbr Messages postés 1 Date d'inscription   Statut Membre
     
    RE bonjour VP29,
    En réalité je cherche maintenant à copier ce fichier (résultat de cpytoimpf) vers un serveur PC.
    Pour l'instant il est sur l'IFS et je ne sais pas comment le mettre ailleurs.
    Merci et à Plus.
    cdlt.
    WBR
    0