|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Invité régulier
![]() Inscription : janvier 2011 Messages : 100 ![]() |
Bonjour
Je dois générer une clé pour chaque ligne de mon fichier, pour cela j'ai rajouter un champs et je lui ai attribué cette méthode ""+Numeric.sequence("s1",1,1); parce que ma clé doit être de type chaine de caractère. lorsque je lance le job, il me met cette error : Citation:
Je suis vraiment débutante en Talend Mercii beaucoup |
|
|
|
00
|
|
|
#2 | ||||
![]() ![]() Jean-Sébastien DARGESConsultant décisionnel Inscription : août 2008 Messages : 983 ![]() |
Bonjour
La réponse semble être simple : Ta table doit déjà contenir des lignes avec un champ égale à ""+Numeric.sequence("s1",1,1). Illustration pour 2 lignes : Première alimentation : - Ta table est vide - l'insertion se fait sans problème et tu obtiens dans ta table : Deuxième alimentation : - ta table contient les enregistrements de l'alimentation précédentes - l'insertion plante car tu essaies d'insérer une seconde fois : Alors que ta colonne à une contrainte unique et que les données sont déjà présentes. Il faut que tu génère une valeur unique pour ta colonne. Il faudrait que tu utilises une séquence Oracle et que tu passes ton champ en NUMBER. Si tu ne peux pas le faire, en début de traitement, il faut que tu récupères le max de ta colonne pour repartir de ce chiffre (qui est un VARCHAR2() à l'origine de cette manière : Code :
Du coup lors de la deuxième alimentation tu auras : Code :
__________________
Google est ton ami mais ton voisin aussi Modérateur BI Mes tutoriels - FAQ Talend - FAQ SQL*Plus Suivez @Developpez sur twitter !
|
||||
|
|
10
|
|
|
#3 | |
|
Invité régulier
![]() Inscription : janvier 2011 Messages : 100 ![]() |
ça me génère une erreur
Citation:
As tu une idée stp ? Merciii bcq MERCI beaucoup ça marche TU m'a sauvé la vie, j'ai plus le pb de violation de contrainte Encore merci |
|
|
|
00
|
|
|
#4 |
|
Invité régulier
![]() Inscription : janvier 2011 Messages : 100 ![]() |
Salut
C'est vrai la solution marche bien Mais je dois a chaque fois changer la valeur (VAL) qu'on donne Numeric.sequence("s1",VAL,1). ALors que mon but et de générer périodiquement mon Job, donc je ne sais pas comment je fais pour que la Val change automatiquement en lançant le job, sinon ce que j'ai fait ne convient pas à ce qu'on me demande As tu une solution STP ??? Merci beaucoup |
|
|
00
|
|
|
#5 | ||
![]() ![]() Jean-Sébastien DARGESConsultant décisionnel Inscription : août 2008 Messages : 983 ![]() |
Il te suffit dans le même job de faire :
1 : créer une variable de context dans ton job par exemple MAX_VAL de type int initialisé à 1 2 : tOracleInput relié à un tContextLoad avec la requête suivante : Code :
4 : lors de l'utilisation de la méthode Numeric.sequence() utilise là de cette façon : Code :
""+Numeric.sequence("s1", context.MAX_VAL, 1)
__________________
Google est ton ami mais ton voisin aussi Modérateur BI Mes tutoriels - FAQ Talend - FAQ SQL*Plus Suivez @Developpez sur twitter !
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com