|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Inscription : janvier 2009 Messages : 159 ![]() |
Bonjour à tous,
Jusqu'à maintenant j'utilise des tOracleInput pour récupérer des lignes d'une table T1 et les insérer dans une table T2 grace à un tOracleOutput Cette fois-ci les lignes que je dois récupérer proviennent d'un fhicer.txt qui a cette forme Col1|Col2|Col1|Col2 Col1|Col2|Col1|Col2 Col1|Col2|Col1|Col2 Col1|Col2|Col1|Col2 Col1|Col2|Col1|Col2 Parfois soit le Col1 n'existe pas soit le Col2, c'est à dire qu'il y a des lignes de ce genre : Col1||Col1 Que dois-je mettre à la place d'un tOracleInput pour lire le fichier et récupérer les colonnes une par une ? Une fois le job créé je dois l'exporter pour lancer le .sh sur un serveur unix, j'imagine que je dois inclure le fichier.txt source quelque part pour que le .sh se lance et arrive à lire le fichier sans que j'intervienne. Que me conseillez-vous ? Merci |
|
|
00
|
|
|
#2 |
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
Le composant que tu dois utiliser est tfileinputdelimited
Dans lequel tu dois indiquer le chemin vers le fichier en entrée Pour qu'il retrouve le fichier tu as plusieurs choix tu peux utiliser une variable de context qui indique le chemin du répertoire ou se trouve les fichiers en entrée ou simplement mettre "fichier.txt" et déposé le fichier au même endroit le sh PS: "./repertoire/fichier.txt" ira chercher le fichier dans le repertoire situé au même endroit que le .sh |
|
|
00
|
|
|
#3 | ||
|
Membre à l'essai
![]() Inscription : janvier 2009 Messages : 159 ![]() |
Merci bien,
Cela a bien marché. J'ai essayé de compliquer un peu le contexte puisque mon fichier source est un peu différent de ce que je pensais La table destination contient cette fois-ci une colonne en plus à savoir un ID not nullable et clé primaire Code :
1|A|B| C|D| 3|E|F| G|| |H| X|| |Z| Pour la première et 3ème ligne je n'ai pas eu de soucie, je les ai bien trouvé dans ma table destination. Pour les lignes 2, 4 et 7 j'ai eu ce message dans la console de Talend : For input string: "C" For input string: "G" For input string: "X" ORA-00001: unique constraint (JIRAQUAL.W_DESTINAION_PK) violated Pour la ligne 5 il a inséré cette ligne : 0 H null Pour la ligne 6 (vide) il n'a rien fait Pour la ligne 7 et 8 il n'a rien fait non plus. alors que dans mon exemple toutes les lignes doivent être insérées sauf la 6ème car elle est vide. Merci bien de vos réponse |
||
|
|
00
|
|
|
#4 |
|
Futur Membre du Club
![]() Consultant informatique Inscription : septembre 2009 Messages : 26 ![]() |
Salut,
pour les lignes 2,4 et 7, le tFileInput s'attendais à recevoir en première valeur un entier (tu as du définir la première colonne en int dans le schema). Puisqu'il trouve respectivement C,G et X, il n'arrive pas à faire la conversion -> erreur "For input String..." Pour la ligne 5, il voit que ta première colonne est vide, tu as du définir comme valeur par défaut "0" et il insère donc cette valeur en base. Pour la ligne 6, OK (note : dans le tFileInput tu as une option : ignorer les lignes vides). Premier point, je te conseille de cocher l'option "terminer en cas d'erreur" du tFileInput. Tu auras alors le stackTrace complet de la première erreur et le job s'arrêtera. Ca permet de débugguer petit à petit. Deuxième point, il faut au tFileInput un fichier avec un format bien précis. En l'occurence, ici, ça doit être dans le pire des cas : 1|A|B| |C|D| 3|E|F| |G|| |H| |X|| |Z| En effet, le composant ne peut pas "comprendre" de lui-même que lorsqu'il y a une ligne "C|D|", par exemple, cela veut dire que la première colonne est absente. A plus tard |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com