|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Inscription : janvier 2009 Messages : 159 ![]() |
Bonjour à tous,
Je voudrais insérer des lignes prises d'un fichier et les insérer dans une table. Le fichier est comme suit : 10|Name1|Desc1 20|Name2|Desc2 30|Name3|Desc3 40|Name4|Desc4 La table est comme suit Tab Id not null, clé primaire ProjID int Name varchar Desc varchar L'id n'existe pas dans le fichier, je dois faire un truc incrémentale qui prend le max (Id) dans T et ajoute 1. Je vous invite à voir la 1ere photo. Dans le tOracleInput j'ai mis cette requête : Puis j'ai fait le mapping qui se trouve dans la 2eme photo jointe. L'insertion des 4 lignes se fait mais au lieux d'avoir 4 id incrémentés j'ai des 0. Ce que je voudrais c'est que si la requête retourne 912, je voudrais avoir 4 lignes avec des id : 913, 914, 915, 916 J'ai essayé avec Numeric.sequence("s1",1,1) mais je ne sais pas comment l'utiliser et je ne sais pas si elle peut répondre à ma question. Merci pour votre aide |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Benoit DurandConsultant en Business Intelligence Freelance Inscription : mars 2005 Messages : 812 ![]() |
Il n'y a pas moyen de gérer ça au niveau de la base de données avec une séquence ?
__________________
Pensez à la fonction Recherche |
|
|
00
|
|
|
#3 |
|
Membre à l'essai
![]() Inscription : janvier 2009 Messages : 159 ![]() |
Justement je n'ai pas le droit de le faire.
En fait il y a une application web qui utilise cette table et dont le code tient en compte l'auto incrémentation Pour cette fois je dois le faire d'une manière exceptionnelle mais normalement on ajoute des lignes à partir de l'application |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Benoit DurandConsultant en Business Intelligence Freelance Inscription : mars 2005 Messages : 812 ![]() |
Bon ok.
Ce que je ferais (fonctionne si l'application n'insère pas de données en même temps) Chargement du max(id) dans une variable globale. Chargement du fichier en utilisant la variable globale dans le tMap et incrémentation de cette variable dans une 2eme sortie par exemple.
__________________
Pensez à la fonction Recherche |
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Inscription : janvier 2009 Messages : 159 ![]() |
Tu peux m'expliquer la 2ème partie stp ?
|
|
|
00
|
|
|
#6 | ||
![]() ![]() Jean-Sébastien DARGESConsultant décisionnel Inscription : août 2008 Messages : 983 ![]() |
Voici la méthode en image.
![]() Ajouter une variable de contexte dans le job avec le nom MAX_ID Tu ajoutes cette requête dans le tOracleInput : Code :
Dans le tMap tu fais (pour ton champ à incrémenter) : Code :
Numeric.sequence("s1",context.MAX_ID,1)
__________________
Google est ton ami mais ton voisin aussi Modérateur BI Mes tutoriels - FAQ Talend - FAQ SQL*Plus Suivez @Developpez sur twitter !
|
||
|
|
00
|
|
|
#7 |
|
Membre à l'essai
![]() Inscription : janvier 2009 Messages : 159 ![]() |
Merci bien pour ta réponse.
J'ai placé un tContextLoad_1 dans le job, comment je peux y ajouter la variable contexte MAX_ID ? J'ai aussi créé une variable MAX_ID dans Contextes (menu à gauche) ai-je bien fait ? Merci |
|
|
00
|
|
|
#8 |
|
Membre à l'essai
![]() Inscription : janvier 2009 Messages : 159 ![]() |
Qui sait utiliser tContextLoad_1 ?
|
|
|
00
|
|
|
#9 |
![]() ![]() Jean-Sébastien DARGESConsultant décisionnel Inscription : août 2008 Messages : 983 ![]() |
Fais exactement comme j'ai indiqué dans mon précédent message
![]() Tu peux ajouter un contexte uniquement dans ton job et pas dans un groupe de contexte (onglet contexte de ton job)
__________________
Google est ton ami mais ton voisin aussi Modérateur BI Mes tutoriels - FAQ Talend - FAQ SQL*Plus Suivez @Developpez sur twitter !
|
|
|
00
|
|
|
#10 |
|
Membre à l'essai
![]() Inscription : janvier 2009 Messages : 159 ![]() |
Merci,
D'accord j'ai supprimé la variable du groupe contexte. J'ai ajouté un tContextLoad_1 dans mon job mais je ne sais pas ajouté la variable MAX_ID. Quand j'ai cliqué sur Éditer le Schéma un tableau s'ouvre et dans lequel il y a les 2 lignes key et value |
|
|
00
|
|
|
#11 |
![]() ![]() Jean-Sébastien DARGESConsultant décisionnel Inscription : août 2008 Messages : 983 ![]() |
transfert les deux colonnes à droites pour avoir le même schéma dans ton composant de lecture Oracle et de chargement des contextes
__________________
Google est ton ami mais ton voisin aussi Modérateur BI Mes tutoriels - FAQ Talend - FAQ SQL*Plus Suivez @Developpez sur twitter !
|
|
|
00
|
|
|
#12 |
|
Membre à l'essai
![]() Inscription : janvier 2009 Messages : 159 ![]() |
Je suis désolé je ne vois pas où je dois mettre la variable MAX_ID
J'ai fait une capture d'écran. Merci |
|
|
00
|
|
|
#13 |
![]() ![]() Jean-Sébastien DARGESConsultant décisionnel Inscription : août 2008 Messages : 983 ![]() |
Le tContextLoad va charger automatiquement la valeur provenant du tOracleInput.
Il faut ensuite que tu utilises ta variables context.MAX_ID dans ton tMap pour générer automatiquement la séquence. En PJ l'exemple du job. Ca vaut mieux que de grandes explications. A importer dans ton Talend "clique droit sur Job puis Importer des éléments"
__________________
Google est ton ami mais ton voisin aussi Modérateur BI Mes tutoriels - FAQ Talend - FAQ SQL*Plus Suivez @Developpez sur twitter !
|
|
|
00
|
|
|
#14 |
|
Membre à l'essai
![]() Inscription : janvier 2009 Messages : 159 ![]() |
Voilà ce que j'ai
|
|
|
00
|
|
|
#15 |
|
Membre à l'essai
![]() Inscription : janvier 2009 Messages : 159 ![]() |
Le tMap ne reconnait pas la variable context.MAX_ID
J'ai fait un nettoyage et voilà ce que j'ai : |
|
|
00
|
|
|
#16 |
![]() ![]() Jean-Sébastien DARGESConsultant décisionnel Inscription : août 2008 Messages : 983 ![]() |
Ajoute une variable de contexte nommée MAX_ID de type Integer dans ton job
dans l'onglet "contexte" de ton job...
__________________
Google est ton ami mais ton voisin aussi Modérateur BI Mes tutoriels - FAQ Talend - FAQ SQL*Plus Suivez @Developpez sur twitter !
|
|
|
00
|
|
|
#17 |
|
Membre à l'essai
![]() Inscription : janvier 2009 Messages : 159 ![]() |
Tu parles de group context ? si c'est le cas j'ai un message d'erreur qui dit que MAX_ID existe déjà
|
|
|
00
|
|
|
#18 |
|
Invité de passage
![]() john Consultant informatique Inscription : janvier 2012 Messages : 1 ![]() |
Bonjour,
pour répondre au premier sujet (s'il est encore d'actualité), il y un autre moyen d'incrémenter l'id, c'est d'utiliser le composant tOracleSCD en renseignant: -clé source : le champ que tu souhaites avoir unique -clé de substitution : id, et création = Table max+1 -les autres champs à glisser dans 'champs de type 1' |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com