Bonjour,
Est ce que c'est possible de lire un fichier texte par lot, par exemple 20 lignes par 20 lignes.
Merci beaucoup.
Bonjour,
Est ce que c'est possible de lire un fichier texte par lot, par exemple 20 lignes par 20 lignes.
Merci beaucoup.
Bonjour,
Je ne connais pas de composant qui fait cela, mais deux idées comme ça qui pourrait t'aider :
1/ tFileInputFullRow (lecture du fichier ligne par ligne) -> tjavaRow (pour sauvegarder les lignes, éventuellement un traitement)
La sauvegarde des lignes, dans un hashMap d'ArrayList par exemple. Avec une variable globale qui stocke un compteur de ligne tu peux savoir quand tu arrives à 20.
Donc mon idée : stocker les 20 premières lignes puis remettre à 0 et faire un nouvel ArrayList avec les 20 prochaines lignes. A la fin tu peux traiter les lignes 20 par 20. Mon idée à une limite si la taille du fichier est trop importante.
Edit : une idée à étudier 2/ -Première lecture du fichier pour avoir la taille.
- faire une boucle de lecture du fichier et mettre dans le head et dans le footer une petite formule qui calcul grâce à cette variable ((Integer)globalMap.get("tFileInputDelimited_1_NB_LINE")), l'intervalle à prendre dans le fichier.
Bonjour,
Apparemment ce n'est pas géré dans Talend alors je me suis débrouillé en code JAVA.
J'ai fait un lien iterate entre l'input 'le fichier' et un composant java, je compte jusqu'à 20 puis je stocke dans un ArrayList de String puis je remets le compteur a zéro et je refais la même chose.
Merci en tout cas.
Bonjour,
Excusez de rouvrir la discussion après tant d’annéeEn fait j’ai un besoin similaire.
Voilà ce que j’ai fait :
En sortie du composant tFlowToIterate, j’ai activé la case à cocher d’exécutions parallèles, et j’ai choisi un lot de 10
Or lors de l’affichage dans le tJava par le code :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 System.out.println( ((Integer)globalMap.get("tFlowToIterate_1_CURRENT_ITERATION")) );
Les lignes parcourus ne sont pas en ordre, et leur ordre diffère d’une exécution à l’autre, comme par exemple :
Y a-t-il une manière plus simple à faire ?
Merci d’avance.
Cordialement.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager