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

Développement de jobs Discussion :

Insertion d'une entête dans un fichier CSV


Sujet :

Développement de jobs

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Insertion d'une entête dans un fichier CSV
    Bonjour,

    Malgré mes recherches, je n'ai pas trouvé de solution correspondant à mon problème. Merci de bien vouloir m'excuser si ma demande fait doublon.

    Je dois générer des fichiers de type CSV comportant un entête (lignes 1 à 9) et des données (à partir de la ligne 10) à partir d'un listing (fichier excel) où chaque enregistrement contient la zone, l'emplacements et le colis. Je dois donc générer un fichier nommé <zone> + ".csv" pour chacune des zones trouvées et y insérer l'ensemble des emplacements et colis s'y trouvant (dans cette zone).
    J'arrive à générer ces fichiers mais les données sont insérées à partir de la ligne 1 du fichier. Hors il me faut indiquer dans l'entête (lignes 1 à 9) des informations diverses et variées telles que le nom de la zone, la date de génération du fichier, du texte, etc.

    Comment faire pour insérer une entête dans chacun de mes fichiers ?

    Merci par avance pour votre aide.

  2. #2
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Bonjour,

    Pourquoi ne pas commencer par écrire l'entête ? le traitement d'insertion des données aura un composant avec la case "écrire après".

    Ou faire 9 lignes vide, et il faudra parcourir à nouveau les fichiers pour remplir l'entête.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par XxArchangexX Voir le message
    Bonjour,

    Pourquoi ne pas commencer par écrire l'entête ? le traitement d'insertion des données aura un composant avec la case "écrire après".
    Merci pour l'intérêt que vous portez à mon problème.

    C'est exactement ce que je veux faire mais que je ne sais pas pas faire : comment insérer une ligne dans le fichier sans passer par un flow ?

    Vous l'aurez compris, je débute dans Talend. Si vous connaissez un tuto à ce sujet, je suis preneur.

  4. #4
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Effectivement, ce qu'il faudrait c'est un flux principale qui fait travailler ton traitement par zone puis un autre flux pour écrire l'entête et les données liées à la zone.

    Voici une idée si j'ai bien suivi ton besoin :

    tFileInputExcel -> tMap (qui transfère la colonne de la zone) -> tUniqRow -> tFlowToIterate -> tJava (Sauvegarde dans une variable globale ou de contexte la zone en cours) -> OnComponentOK ->

    //Maintenant tu es dans un nouveau flux qui est dans un iterate sur les zones :

    tFileInputExcel ou tFixedFlowInput s'il n'y a pas besoin de données de l'excel -> tMap -> tFileOutputDelimited (.csv on écrit l'entête avec les infos et le nom <zone>)
    -> OnSubJobOK -> tFileInputExcel ->tMap (avec le filtre de la zone) -> tFileOutputDelimited (avec l'option écrire après de cochée)

    Pour chaque zone il va créer un fichier zone et écrire l'entête puis écrire le contenu correspondant à la zone en cours.

    Je ne crois pas qu'il y ai un tutoriel sur le site pour ce type de traitement. Ils sont ici au cas où : Tutoriel Talend

    PS:
    comment insérer une ligne dans le fichier sans passer par un flow ?
    Il faut passer par une routine java , sinon en Talend composant, à ma connaissance, il faut forcement un flux, tu dois avoir le composant tFixedFlowInput, qui permet de faire un flux en dur, tu peux y écrire les données de ton entête par exemple.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup, ça a l'air de fonctionner.

    /*Création d'un fichier par zone et remplissage de l'entête*/
    tFileInputExcel_1 -(Main)-> tUniqRow_1 -(row7:Uniques)-> tFlowToIterate_1 -(iterate)-> tFixedFlowInput_1 -(Main)-> tMap_3 -(Main)-> tFileOutputDelimited_1

    /*Insertion des données dans les fichiers*/
    -(OncomponentOk)-> tFileInputExcel_2 -(Main)-> tMap_2 -(Main)-> tFileOuputDelimited_1

    Le tFixedFlowInput est vide : il ne sert que de point d'entrée au tMap_1 et c'est dans le flux de sortie du tMap_3 que je défini mon entête.
    Le nom des fichiers générés dans les tFileOuputDelimited est défini par ((String)globalMap.get("row7.ZONE")) qui contient la zone courante parcourue.

    Merci beaucoup pour votre aide.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/04/2008, 16h37
  2. Réponses: 1
    Dernier message: 15/11/2007, 13h52
  3. insertion d'une colonne dans un fichier
    Par yesil dans le forum Langage
    Réponses: 1
    Dernier message: 21/09/2007, 16h25
  4. décharger une table dans un fichier CSV
    Par shrek7577 dans le forum SQL
    Réponses: 3
    Dernier message: 22/12/2006, 16h44
  5. resultat d'une requete dans un fichier csv
    Par PAYASS59 dans le forum Requêtes
    Réponses: 1
    Dernier message: 21/09/2005, 21h14

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