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 09/01/2011, 14h20   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 3
Points : 0
Points : 0
Par défaut gestion des rejets de tOracleOutput

Bonjour,

J'ai une question au sujet de la gestion des rejets lors de l'alimentation d'une table oracle. J'essaie d'insérer dans un fichier texte les lignes qui passent pas dans ma base de données. Pour faire cela j'ai décoché la case « Die on error » dans mon tMap, et j'ai configuré le tMap comme dans l'image001.

Le souci c'est que lors de l'exécution du job aucune ligne passe dans mon fichier de rejets, alors que j'ai bien une erreur de base de données : ORA-12899: valeur trop grande pour la colonne "SYSTEM"."ENTETE_DU_SAS"."TYPE_ELABO" (réelle : 13, maximum : 6)
(Pour avoir l'erreur j'ai fait express, je me suis débrouillé pour avoir dans la source une valeur trop grande par rapport à la cible).

Vous pouvez visualiser la diagramme de mon job dans l'immage002, est ce que quelqu'un a une idée comment attraper ce genre d'erreurs et les insérer dans un fichier ?
Merci
Images attachées
Type de fichier : png image001.png (116,3 Ko, 17 affichages)
Type de fichier : png image002.png (155,9 Ko, 11 affichages)
TG8000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 10h14   #2
Membre actif
 
Consultant informatique
Inscription : mars 2003
Messages : 130
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : mars 2003
Messages : 130
Points : 181
Points : 181
Ce n'est pas au niveau du tmap que tu peux rattraper ce genre d'erreur mais au niveau du tOracleOutput. Si tu fais un click droit dessus tu peux sélectionner le flux de rejet.
kisskool45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 11h09   #3
Membre actif
 
Consultant informatique
Inscription : mars 2003
Messages : 130
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : mars 2003
Messages : 130
Points : 181
Points : 181
Je modifie ma réponse, tu ne peux gérer les erreur de ce type la au niveau de tOracleOutput que si tu choisi l'option insert or update
kisskool45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 11h46   #4
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 18
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2007
Messages : 18
Points : 29
Points : 29
Envoyer un message via MSN à hoss69
Par défaut Deux solution

Avant tous vérifie dans ton tMap_4 dans la sortie
"entete_du_sas" que t'as bien renseigné les longueurs attendues dans la base de donnée (exempe 6 pour TYPE_ELABO)

Autrement, t'as deux autres solutions possibles pour gérer ces rejets :

1) A partir du composant tOracleOutput, tu fais une sortie de rejet vers ton le fichier de rejet csv en passant éventuellement par un tMap pour formater les données. Dans ce cas, tu capture les requêtes qui ont échouées en base.

2) Dans ton tMap_4, tu rajoute des conditions sur la sortie "entete_du_sas" du genre suivant :
- Si j'ai bien compris, pour le champ TYPE_ELABO qui doit avoir 6 caractères au maximum en base de données et alimenté à partir du champ row1.Column2 tu peux mettre la condition suivante :
(row1.Column2 == null || row1.Column2.length < 7)
et tu capture les rejets dans ta deuxième sortie (dans ce cas il faudra cocher le "die en error")
hoss69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 12h12   #5
Membre émérite
 
Homme Nicolas Saumande
Architecte Décisionnel
Inscription : février 2008
Messages : 693
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Saumande
Âge : 36
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Architecte Décisionnel

Informations forums :
Inscription : février 2008
Messages : 693
Points : 879
Points : 879
Citation:
Envoyé par kisskool45 Voir le message
Je modifie ma réponse, tu ne peux gérer les erreur de ce type la au niveau de tOracleOutput que si tu choisi l'option insert or update
Pas tout à fait.
Le lien 'Rejet' n'est disponible que si les options 'Use Batch Size' (Advanced settings) et 'Die on error' (Basic settings) sont décochées.
Si tu choisis l'option 'insert or update', ça désactive automatiquement le 'Use Batch Size'. Mais il est possible d'avoir un lien de rejet avec une alimentation juste en insert par exemple.

Nicolas
DevNico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 12h14   #6
Membre actif
 
Consultant informatique
Inscription : mars 2003
Messages : 130
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : mars 2003
Messages : 130
Points : 181
Points : 181
autant pour moi ^^
kisskool45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 11h49   #7
Invité de passage
 
Inscription : janvier 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 3
Points : 0
Points : 0
Par défaut Merci

Merci à tous pour vos réponses, il faut en effet utiliser l'option Rejets sur le composant toracleoutput.
Comme kisskool45 et DevNico l'ont dit, il faut également choisir l'option insert or update et surtout décocher l'option batch dans les Advanced settings.
TG8000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h28.


 
 
 
 
Partenaires

Hébergement Web