|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Monica Inscription : novembre 2010 Messages : 23 ![]() |
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 ? |
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Ingénieur développement logiciels Inscription : août 2011 Messages : 49 ![]() |
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. |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Monica Inscription : novembre 2010 Messages : 23 ![]() |
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...
|
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() Mustapha EL HASSAKIngénieur développement logiciels Inscription : août 2009 Messages : 627 ![]() |
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) Mes articles publiés |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Ingénieur développement logiciels Inscription : août 2011 Messages : 49 ![]() |
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 |
|
|
00
|
|
|
#6 | |
|
Candidat au titre de Membre du Club
![]() Monica Inscription : novembre 2010 Messages : 23 ![]() |
Citation:
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 ? |
|
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() Mustapha EL HASSAKIngénieur développement logiciels Inscription : août 2009 Messages : 627 ![]() |
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 :
(String)globalMap.get("MaSortie.file_path") Code :
((BOOLEAN)globalMap.get("tFileExist_1_EXISTS"))
__________________
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) Mes articles publiés |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com