|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 3 ![]() |
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 |
|
|
00
|
|
|
#2 |
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
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.
|
|
|
00
|
|
|
#3 |
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
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
|
|
|
00
|
|
|
#4 |
|
Nouveau Membre du Club
![]() |
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") |
|
|
00
|
|
|
#5 | |
|
Membre émérite
![]() Nicolas SaumandeArchitecte Décisionnel Inscription : février 2008 Messages : 693 ![]() |
Citation:
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 |
|
|
|
00
|
|
|
#6 |
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
autant pour moi ^^
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 3 ![]() |
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. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com