Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > ETL > Talend
Talend Forum d'entraide sur Talend (Talend Open Studio, ...). Avant de poster --> FAQ Talend, Tutoriels Talend
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/07/2011, 10h33   #1
Invité régulier
 
Inscription : novembre 2006
Messages : 33
Détails du profil
Informations personnelles :
Localisation : France, Finistère (Bretagne)

Informations forums :
Inscription : novembre 2006
Messages : 33
Points : 9
Points : 9
Par défaut Parser fichier complexe

Bonjour,

Je souhaite parser un fichier délimité complexe avec talend.
le format est le suivant :
Enregistrement de type 100 taille fixe content 20 champs

Enregistrement de type 200 taille dynamique les 2 premier champs sont fixe et les suivant dynamique par paquet de 2


exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
100;3309;MMC;C;GMX;29/06/2011;250;640316;931;OTB;7E;;N;O;20;;1;POI1;9.00;
200;9.00;45;1;46;1;48;1;50;1;51;1
100;3309;MMC;C;GMX;29/06/2011;250;640316;931;OTB;7E;;N;O;30;;1;POI1;3.50;
200;3.50;38;1;39;1;40;1;41;1
100;3309;MMC;C;GMX;29/06/2011;250;114913;310;LL;7E;;N;O;10;;1;POI1;7.30;
200;7.30;59;2;68;1
100;3309;MMC;C;GMX;29/06/2011;250;114913;310;LL;7E;;N;O;20;;1;POI1;50.00;
200;;47;1;48;2
100;3309;MMC;C;GMX;29/06/2011;250;114913;310;LL;7E;;N;O;30;;1;POI1;100.00;
200;;41;1;42;1;45;1
100;3309;MMC;C;GMX;29/06/2011;250;114913;310;LL;7E;;N;O;30;;1;POI1;100.00;
200;;0;0

J'ai essayé d'utiliser le tFIleInputMSDelimited mais comme la ligne de type 200 et dynamique je galère.

je souhaiterai convertir ce fichier en CSV standard

de ça :
Code :
1
2
3
 
100;3309;MMC;C;GMX;29/06/2011;250;640316;931;OTB;7E;;N;O;20;;1;POI1;9.00;
200;9.00;45;1;46;1;48;1;50;1;51;1
vers ça :
Code :
1
2
3
4
5
6
 
100;3309;MMC;C;GMX;29/06/2011;250;640316;931;OTB;7E;;N;O;20;;1;POI1;9.00;9.00;45;1
100;3309;MMC;C;GMX;29/06/2011;250;640316;931;OTB;7E;;N;O;20;;1;POI1;9.00;9.00;46;1
100;3309;MMC;C;GMX;29/06/2011;250;640316;931;OTB;7E;;N;O;20;;1;POI1;9.00;9.00;48;1
100;3309;MMC;C;GMX;29/06/2011;250;640316;931;OTB;7E;;N;O;20;;1;POI1;9.00;9.00;50;1
100;3309;MMC;C;GMX;29/06/2011;250;640316;931;OTB;7E;;N;O;20;;1;POI1;9.00;9.00;51;1
avez vous des idées?
d'avance merci
Pirion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 14h24   #2
Invité régulier
 
Inscription : novembre 2006
Messages : 33
Détails du profil
Informations personnelles :
Localisation : France, Finistère (Bretagne)

Informations forums :
Inscription : novembre 2006
Messages : 33
Points : 9
Points : 9
J'ai résolu mon problème tout seul.
j'ai crée une routine qui garde en mémoire la dernière ligne type '100' et l'ajoute au chaine type '200' découpé

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
 
static String Line100Courante;
public static String convertLine200(String line) {
    	String[] tabLine = line.split(";");
    	String newChaine="";
    	IF (tabLine[0].equals("100"))
    		Line100Courante =line;
 
    	IF (tabLine[0].equals("200"))
    	{
    		FOR (int i=2; i <  tabLine.length;i=i+2)
    		{
    			newChaine += Line100Courante  + ";" + tabLine[1]  + ";" + tabLine[i] + ";" + tabLine[i+1] + "\n";
    		}
    	}
 
    	RETURN newChaine;
    }
tFileInputFullRow --> tMap --> tFileOutputDelimited

dans le tFileOutputDelimited
j'ai mis dans le séparateur de ligne "" vu que ma routine en ajoute déjà

et dans le tMap je fait appelle a ma routine.
Images attachées
Type de fichier : jpg job.JPG (11,2 Ko, 3 affichages)
Pirion est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h11.


 
 
 
 
Partenaires

Hébergement Web