One Star

Problem with last_insert_id [EN&FR]



Hello
Abstract : I would like to insert data from Excel to a DB with an auto-increment primary key "id" , and get the last insert ID (, or (why not) each insert id).
I use Talend Open Studio 4.0.0
Problem : Every things don't work.
Use case :
I tried 2 methods.
1) The first comes from the documentation into Talend. With this schemas, the tMysqlLastInsertId component returns only and always 0
(First Schemas)
2) The second comes from the forum. In this case, the tMysqlLastInsertId component returns wrong values. For fews lines inserted, the component returns the FIRST insert ID. For big insert, it returns the real last_insert_id minus a small number (E.G. 27 or 37).
Example :
If my data set size is equal to 4 : At the First running job : the results will be 1 then 5, then 9, then 13 ...
If my data set size is equal to 1100 : At the First running job : the results will be 1073 then 2173, then 3273, then 4373 ...
(Second Schemas)
Thanks
---------------------------------------------------------------------------------------------------------------------------


Bonjour
Contexte : J'ai besoin d'inserer des données provenant d'excel dans une BDD avec comme clé primaire un champs en auto-increment, et ensuite de récuperer le dernier id insérer ou alors tous les ids au fur et à mesure de l'insertion (peut importe)
J'utilise Talend Open Studio 4.0.0
Problème : Rien de marche
Case d'utilisation :
J'ai essayé 2 methodes.
1) La première vient de la documentation de Talend (dans le logiciel). Dans ce cas le composant tMysqlLastInsertId ne me retourne que des 0
(premier schéma)
2) La deuxième vient du forum. Dans ce cas, le composant tMysqlLastInsertId ne me retourne que des mauvaises valeurs. Pour un petit jeu de donnée a inserer, il me retourn le premier id inseré. Pour de grand jeu de donnée, il me retourne la bonne valeur moins un petit nombre.
Exemple :
Si la taille de mon jeux de donnée est egale a 4 : Au premier lancement de job, le résultat sera 1 puis 5 puis 9 puis 13
Si la taille de mon jeux de donnée est egale a 1100 : Au premier lancement de job, le résultat sera 1073 puis 2173 puis 3273 puis 4373 ...
(2eme schéma)
Merci
3 REPLIES
One Star

Re: Problem with last_insert_id [EN&FR]

J'ai le même besoin, mais pour PostgreSQL et pas de tLastInsertedid de disponible pour PostgreSQL... J'ai trouvé ces post qui rapporte le même problème à ce que j'en comprends qui date déjà de près de 3 ans :
http://www.talendforge.org/forum/viewtopic.php?id=1264
Et
http://talendforge.org/forum/viewtopic.php?id=463
Je me demandais également comment faire pour laisser PostgreSQL incrémenter ces "surrogates" seuls... J'ai pas trouvé... Je suis débutant avec Talend.
Merci pour l'aide.
One Star

Re: Problem with last_insert_id [EN&FR]

Bonjour à tous,
Désolé c'est peut-être un peu tard pour une réponse mais cela pourra servir à quelqu'un. Pour pouvoir utiliser le lastid vous devez décochez l'option avancée "insertions étendues" de votre insert.
Voilà,
Bonne journée !
One Star

Re: Problem with last_insert_id [EN&FR]

Est ce que tu peux m'en dire un peu plus sur le "lastid" dont tu viens de parler ?
Quelles sont les étapes à suivre ?