|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : janvier 2011 Messages : 100 ![]() |
Bonjour,
Je travaille avec TALEND, je suis débutante. JE veux ajouter dans la Tmap un champ que je vais considerer comme une clé, donc je voudrais savoir si y a une méthode JAva qu'on peut appeler qui permet de générer des clé automatiquement pour les affecter au champs que je vais ajouter. Y a t-il quelqu'un qui a fait ça auparavant SVP ?? Avez vous une solution à me proposer SVP ??, Merci d'avance |
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Inscription : août 2005 Messages : 117 ![]() |
Tout dépend du but recherché.
Tu peux générer une séquence via "Numeric.sequence("s1",1,1)" dans une variable de ton tMap cependant, cette séquence sera réinitialisée à chacun des lancements de ton job. Si le but est de générer des ID dans la base cible, alors le plus simple reste encore de déclarer la séquence dans ta base. |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : janvier 2011 Messages : 100 ![]() |
Tout d'abord je vous remercie infiniment
OUi, c'est ça mon but est de déclarer des ID dans la base cible. Sachant que je travaille avec Oracle, comment puis je déclarer cette séquence dans la base. ?? Avez vous une idée SVP ?? ça m'aidera vraiment Merci beaucoup Comment je peux créer un trigger dans Oracle qui permet de déclarer cette séquence..... |
|
|
00
|
|
|
#4 |
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
Google est ton ami
resultat pour la sequence : http://www.techonthenet.com/oracle/sequences.php Tu n'a pas besoin de trigger pour utiliser ta sequence.. Un trigger ne permet pas de déclarer une sequence.... Un trigger est un déclencheur, il permet d'exécuter une action si une autre action à été exécuter. Exemple : insert une ligne dans une table de log quand le champs X de la table T est updater. Si tu veux en savoir plus sur les trigger une recherche google est vite fait. Pour ton problème, tu dois juste surcharger la colonne au niveau de ton composant tOutputOracle. Dans l'onglet paramètre avancé de ton composant tu as un espace avec un cadre nommé colonnes additionnel. tu ajoute une colonne ayant comme colonne de reference ton ID, en position tu met REMPLACER, dans expression sql "masequence.nextval()", et dans nom le nom de ta colonne ID. |
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Inscription : août 2005 Messages : 117 ![]() |
L'utilisation de la séquence dans les colonnes additionnelles comporte un risque, à savoir la séquence ne sera pas incrémentée si une ligne est insérée par autre chose que l'ETL qui ne fait pas appel à la séquence (un applicatif par exemple).
Cela peut être cohérent si la table cible n'est alimenté que par l'ETL mais cela peut comporter un risque s'il s'agit d'une base opérationnelle. En conclusion, lorsqu'on utilise une séquence pour alimenter un ID et que l'on veut garantir son unicité, il faut ABSOLUMENT que cette séquence soit appliqué à TOUS les insert dans cette table. La solution de la gestion de cette séquence via l'ETL n'est pas une bonne pratique. Concernant la remarque sur les trigger (trigger before insert), c'est pourtant une des solutions proposées par les DBA pour gérer les ID auto incrémentés puisque, en Oracle, il n'existe pas l'équivalent de IDENTITY. (En outre la proposition que j'ai faite tantôt dans un post similaire d'utiliser le default ne fonctionne pas) |
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : janvier 2011 Messages : 100 ![]() |
En fait finalement on va pas faire update dans la base de données sur ce champs que je vais rajouter..
Donc ta solution que tu m'a proposé est la bonne "Tu peux générer une séquence via "Numeric.sequence("s1",1,1)" dans une variable de ton tMap cependant, cette séquence sera réinitialisée à chacun des lancements de ton job." Par contre , pour le mme job je dois apeler plusieurs fois cette méthode "Numeric.sequence("s1",1,1)" pour l'attribuer à chaque ligne de mon fichier, cad pour chaque ligne je dois rajouter un champs qui sera une clé; Mais avec cette méthode "Numeric.sequence("s1",1,1)" il va me générer la meme séquence pour toutes les lignes Je veux rajouter un champs pour chaque ligne de fichier, et ce champs sera une clé .... SVP pouvez vous m'aidez ??? ça sera vraiment gentill de votre part Merci beaucoup |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com