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 08/12/2010, 09h51   #1
Invité de passage
 
Inscription : février 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 6
Points : 2
Points : 2
Par défaut récupérer clé primaire auto incrément

Bonjour,
Dans un de mes job talend, j'ai besoin d'insérer (ou modifier) un enregistrement dans une table 1 mysql, je dois ensuite récupérer la clé primaire de cette table (qui est en auto incrément) et d'insérer un enregistrement dans une autre table avec cette valeur.
Actuellement, n'ayant pas trouvé de solution, j'éxécute le composant tMysqlSP qui appelle une procédure stockée. Cette procédure stockée ne fait que insérer un enregistrement vide dans la table 1 et récupère l'id. Je peux donc par la suite insérer cette valeur dans ma deuxième table.

Je ne suis pas satisfait de cette solution. Existe t'il une autre solution ?

Merci par avance,

Estelle
tetelle49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 10h55   #2
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
Bonjour,

A priori le compostant tMysqlLastInsertId est fait pour ça.
Je ne l'ai jamais utilisé, du coup je ne m'avance pas trop...
Et j'ai un petit doute sur son bon fonctionnement en cas de plusieurs insertions en parallèle dans la table...

Nicolas
DevNico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 11h57   #3
Invité de passage
 
Inscription : février 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 6
Points : 2
Points : 2
Je ne vois pas comment je peux utiliser le tMysqlLastInsertId.

Je m'explique un peu plus, je vais prendre un exemple. J'ai 2 valeurs en entrée d'un tmap : val1, val2.

val1 doit être insérée dans la table1.
val2 doit être insérée dans la table2 avec l'id de la table1.

j'ai donc un tmap avec comme première sortie un tMysqlOutput vers la table 1. je branche après un tmysqlLastInsertId.

Comment puis-je récupérer l'id avec tMysqlLastInsertId et récupérer ma val2 du tmap pour insérer dans ma table2.

Je vous joins un un schéma simplifié !

Mon problème est donc le suivant : J'aimerais brancher le tMysqlOutput de la table2 après le tMysqlLastInsertId mais comment puis-je récupérer val2 qui n'est pas dans le flux de sortie ?
Images attachées
Type de fichier : jpg talend-id.JPG (28,1 Ko, 38 affichages)
tetelle49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 19h44   #4
Membre régulier
 
Inscription : mai 2007
Messages : 173
Détails du profil
Informations personnelles :
Âge : 42
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : mai 2007
Messages : 173
Points : 70
Points : 70
La page 494 du guide de reference 4.x des composants donne un example de ce que vous souhaitez faire... Précisément.

P.
pdelorme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 15h09   #5
Membre habitué
 
Homme Nicolas Vandenbergue
Conseil - Consultant en systèmes d'information
Inscription : janvier 2011
Messages : 88
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vandenbergue
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information
Secteur : Conseil

Informations forums :
Inscription : janvier 2011
Messages : 88
Points : 112
Points : 112
Bonjour,

J'ai regardé cela. Parlez-vous des composants tGreenplumOutputBulk et tGreenplumBulkExec ?
J'ai testé avec un tMysqlOutputBulk et tMysqlBulkExec. Je peux ajouter des enregistrements dans la table, mais comment récupérer l'ID (auto incrément de la table)?
Merci si vous pouvez préciser.
NicolasTT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 17h38   #6
Membre régulier
 
Etienne Menuet
Inscription : mai 2010
Messages : 71
Détails du profil
Informations personnelles :
Nom : Etienne Menuet
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2010
Messages : 71
Points : 96
Points : 96
Bonjour,

Je réponds a partir de l'image de tetelle49.

Dans le cas 1, il suffit d'ajouter un tSetGlobalVar après le tMysqlLastInsertId et de créer sa propre variable global.
Dans le mapping pour la table 2 il suffit de renseigner avec la globalVariable que l'on a créé : (Interger)globalMap.get("MyVar").

Dans le cas 2, il faut décrire dans le schéma toutes les colonnes nécessaire pour les 2 tables, puis aller dans les paramètres avancé du composants Output de la table 1 et cocher use field option qui permet de sélectionner les colonnes pour une table 1.
Pour l'ID, un tMap pour effectuer le mapping des colonnes dans la table 2 permet de prendre en compte la valeur de l'auto incrément.
emenuet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 09h38   #7
Membre régulier
 
Inscription : mai 2007
Messages : 173
Détails du profil
Informations personnelles :
Âge : 42
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : mai 2007
Messages : 173
Points : 70
Points : 70
J'ai du me tromper de page ou de version du doc.
Je voulais parler de TalendOpenStudio_Components_RG_42a_FR.pdf, (p642 du doc ou p670 du pdf :
* tMysqlLastInsertId
* Scénario : Récupérer les ID des dernières entrées ajoutées
pdelorme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 16h54   #8
Membre habitué
 
Homme Nicolas Vandenbergue
Conseil - Consultant en systèmes d'information
Inscription : janvier 2011
Messages : 88
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vandenbergue
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information
Secteur : Conseil

Informations forums :
Inscription : janvier 2011
Messages : 88
Points : 112
Points : 112
Merci, nous avons pu faire cela

Nous avions deux choses que nous ne maîtrisions pas :
1. La possibilité de passer des données du flux 'à travers' le premier tMysqlOutput (comme indiqué par emenuet, le "use field option qui permet de sélectionner les colonnes pour une table 1")
2. Le fait de "vérifiez que la case Extend Insert de l'onglet Advanced settings est bien décochée" comme indiqué dans le TalendOpenStudio_Components_RG_42a_FR.pdf (p. 670 et suivantes), comme indiqué par pdelorme

Encore merci à vous deux.
NicolasTT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 15h54   #9
Invité régulier
 
Inscription : août 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 17
Points : 7
Points : 7
Bonjour,
J'ai la même problématique que celle décrite ici. Comment avez-vous utiliser le "use field option" pour résoudre votre problème ?

Apparemment, il faut ajouter les champs du schéma de table2 dans le schéma entre le tMap et table1 : il y a-t-il un moyen rapide de faire cela pour les gros schémas, où doit-on le faire à la main, champs par champs ?

Merci
nyaman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 17h14   #10
Membre habitué
 
Homme Nicolas Vandenbergue
Conseil - Consultant en systèmes d'information
Inscription : janvier 2011
Messages : 88
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vandenbergue
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information
Secteur : Conseil

Informations forums :
Inscription : janvier 2011
Messages : 88
Points : 112
Points : 112
Bonjour,

Tu peux cliquer sur 'Editer le schéma' sur le tMysqlLastInsertId et utiliser les boutons pour ajouter les champs de la table 2 sur la description du tMysqlLastInsertId, puis faire la même chose pour la description de la table 1.
NicolasTT est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h50.


 
 
 
 
Partenaires

Hébergement Web