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 :

Retrouver des fichiers en fonction du contenu d'une BDD et les copier sur un serveur distant


Sujet :

Développement de jobs

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 23
    Points : 22
    Points
    22
    Par défaut Retrouver des fichiers en fonction du contenu d'une BDD et les copier sur un serveur distant
    Bonjour à tous,


    Je tente depuis quelques jours d'associer les tFlowToIterate, tFileList et autres tFTPPut pour effectuer le traitement suivant :

    - J'ai dans une base de données en local une table DOCUMENT listant tous mes tableaux Excel : nom du fichier, répertoire, type de fichier, destinataire... et un flag Y/N me permettant de savoir si je dois copier le fichier ou non.
    - Tous les fichiers se trouvent dans un répertoire réseau //SERVEURLOCAL/documents
    - J'aimerais créer un job Talend parcourant la table DOCUMENT, et pour toutes les lignes ayant TRANSFERT à 'Y', copier le fichier sur mon serveur FTP.

    J'ai déjà un job permettant de récupérer tous les fichiers se trouvant dans //SERVEURLOCAL/documents et de créer les lignes correspondantes dans la table DOCUMENT, mais j'ai un peu de mal à concevoir le traitement inverse : récupérer certaines lignes de DOCUMENT, et copier les fichiers vers un FTP.


    Est-ce possible avec Talend Open Studio 4.2.2 ou est-ce que je m'échine pour rien ?

  2. #2
    Membre du Club Avatar de jnbarthas
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 51
    Points : 68
    Points
    68
    Par défaut
    si vous êtes à l'aise en java c'est possible en utilisant une variable globale de type ArrayList pour enregistrer tous les éléments à traiter (String nom); critère FLAG.
    Ensuite, vous balayez la liste avec un tLoop et déclenchez une instruction de copie en code java, ligne de commande ou plus simplement via le composant adapté avec en paramètre une information stockée en ArrayList.

    bonne continuation.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 23
    Points : 22
    Points
    22
    Par défaut
    N'est-il pas possible de passer exclusivement par des composants Talend ? Lorsque nous avons choisi cet ETL, c'était justement pour ne plus avoir à coder...

  4. #4
    Membre émérite
    Avatar de haskouse
    Homme Profil pro
    Salesforce
    Inscrit en
    Août 2009
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Salesforce
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2009
    Messages : 923
    Points : 2 684
    Points
    2 684
    Par défaut
    A moins avis cela est possible sur Talend, sans avoir à coder quoi que ce soit. La question qui se pose maintenant c'est sur quoi tu bloques au juste ?
    "Le savant qui enseigne le bien aux gens et ne le met pas en pratique, est semblable à la torche qui éclaire en se brûlant." Mohammed le Messager d’Allah (que la paix et le salut d'Allah soient sur lui)

    Tutoriels Talend
    Mes articles publiés
    Mon CV en-ligne

  5. #5
    Membre du Club Avatar de jnbarthas
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 51
    Points : 68
    Points
    68
    Par défaut
    Pour déclencher l'instruction spécifique sur un ou plusieurs éléments du flux, c'est la première idée qui me vient.
    Regardez du côté du composant tJavaFlex (préparation de la liste), puis tLoop.

    Côté code, c'est très léger mais il faut se documenter un peu pour se lancer...


    Cependant, vous pouvez faire SANS CODE en utilisant un lien ITERATE sur un composant du type tFlowToIterate (flux des éléments à traiter) pour ensuite appeler le tFtP qui convient.
    Voir
    http://www.developpez.net/forums/d89...terate-talend/
    pour les exemples de préparation des données

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 23
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par haskouse Voir le message
    A moins avis cela est possible sur Talend, sans avoir à coder quoi que ce soit. La question qui se pose maintenant c'est sur quoi tu bloques au juste ?

    J'imaginais le flux suivant :

    tOracleInput : select * from document where flag='Y' (serveur local)
    v (Main)
    tMap : Output = nom du fichier, répertoire, id_destinataire
    v (Main)
    tFlowToIterate : Transformation du flux en Iterate
    v (Iterate)
    tFileExist : Si le fichier est présent dans mon répertoire réseau
    v (If file exists)
    tFTPPut : Alors on le copie sur le FTP
    v (Main)
    tMySqlOutput : Et on insère les informations dans une autre BDD (serveur distant)


    J'ai du mal à transformer le flux d'informations (contenant entre autres l'emplacement de mon fichier) en action (prendre la colonne file_path en output du tMap et aller vérifier si le fichier concerné existe).


    Je ne suis pas familiarisée avec les variables globales, encore moins avec Talend : est-ce le seul moyen de prendre une information du flux de données et de l'utiliser en entrée d'un tFileExist ?

  7. #7
    Membre émérite
    Avatar de haskouse
    Homme Profil pro
    Salesforce
    Inscrit en
    Août 2009
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Salesforce
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2009
    Messages : 923
    Points : 2 684
    Points
    2 684
    Par défaut
    En fait je ne pense pas que tu aies besoin d'utiliser des varibales globales. Si on suppose que le lien entre ton "tMap" et ton "tFlowToIterate" porte le nom "MaSortie" et que ta colonne contenant le chemin de ton fichier se nomme "file_path" alors dans ce cas là tu peux mettre directement dans le chemin de ton tFileExist la valeur suivante :

    Sinon si ça ne marche pas tu utilises cette syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (String)globalMap.get("MaSortie.file_path")
    Et dans le lien RunIf pour savoir si le fichier existe ou non tu mets le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((Boolean)globalMap.get("tFileExist_1_EXISTS"))
    Bonne chance.
    "Le savant qui enseigne le bien aux gens et ne le met pas en pratique, est semblable à la torche qui éclaire en se brûlant." Mohammed le Messager d’Allah (que la paix et le salut d'Allah soient sur lui)

    Tutoriels Talend
    Mes articles publiés
    Mon CV en-ligne

Discussions similaires

  1. [XL-2010] Supprimer des lignes en fonction du contenu d'une cellule
    Par Ardiden31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/05/2015, 08h49
  2. Réponses: 0
    Dernier message: 14/10/2014, 12h21
  3. [SP-2007] Extraire des fichiers Excel ou Csv contenu dans une liste sharepoint
    Par stardeus dans le forum SharePoint
    Réponses: 23
    Dernier message: 03/11/2010, 15h11
  4. Réponses: 3
    Dernier message: 09/07/2010, 08h51
  5. Chercher des données en fonction d'un titre de colonne puis les copier.
    Par sergio_gr66 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/09/2009, 15h27

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