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 01/07/2008, 16h17   #1
Invité de passage
 
Inscription : juillet 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 3
Points : 1
Points : 1
Par défaut Utilisation du rollback

bonjour,

ayant du mal à trouver de la documentation sur la (bonne) utilisation du commit/rollback de mysql via talent, j'aurai besoin de votre aide

Mon job : vider une table mysql, insérer les données à partir d'un fichier délimité dans cette table.

Donc je crée la connexion à la base mysql. Connexion que j'utilise dans chacun des composants. Si cette connexion n'est pas valide, une petite messagebox.
Un composant pour lire le fichier délimité, un composant pour l'insertion dans la base de données composant configuré pour qu'il me vide la table avant de faire les insert

J'ai mis le composant rollback pour qu'il fasse un rollback à la première erreur, et le commit pour qu'il le fasse si tout se passe bien.

Si le fichier délimité est valide, aucun problème les données sont insérées. Par contre si j'insère une erreur, les données jusqu'à l'erreur sont insérées et le rollback ne s'effectue pas.

Est-ce que quelqu'un pourrait m'expliquer où je fais une erreur.

Fichier joint : la capture de mon job
Images attachées
Type de fichier : jpg rollback.JPG (28,3 Ko, 28 affichages)
kingbabylon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 09h16   #2
Candidat au titre de Membre du Club
 
Inscription : avril 2008
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 22
Points : 13
Points : 13
Bonjour,
pour utiliser le rollback/commit je pense que tu devrais mettre ton commit aussi sur ton composant tMysqlOutput.

Et le relier avec le OnComponentOk. Penses à cocher close connection aussi (si ce n'est pas deja fait).
Spacer_33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 10h01   #3
Membre Expert
 
Avatar de Benoit_Durand
 
Benoit Durand
Consultant en Business Intelligence Freelance
Inscription : mars 2005
Messages : 819
Détails du profil
Informations personnelles :
Nom : Benoit Durand
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Consultant en Business Intelligence Freelance

Informations forums :
Inscription : mars 2005
Messages : 819
Points : 1 093
Points : 1 093
Dans les paramètres de ton output tu choisis bien d'utiliser la connection définie avant ?
Benoit_Durand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 10h10   #4
Invité de passage
 
Inscription : juillet 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 3
Points : 1
Points : 1
J'ai essayé avec le commit sur l'output ça ne change rien. D'ailleurs d'après ce que j'ai pu lire il faut mieux éviter de le mettre à cet endroit.
Sinon pour le close connection il est coché par défaut

Citation:
Envoyé par Hebus_Beer Voir le message
Dans les paramètres de ton output tu choisis bien d'utiliser la connection définie avant ?
Oui oui j'ai bien coché : use an existing connection et je l'ai lié à tMysqlConnection_1

Je continue mon investigation
kingbabylon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 14h23   #5
Nouveau Membre du Club
 
Inscription : juin 2006
Messages : 109
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 109
Points : 37
Points : 37
Bonjour,

J'utilise les commit et rollback dans beaucoup de job et ils fonctionnent bien, c'est pour postgresSql moi par contre.

Dans mon job, je met :
un TpostgresConnection puis je le lie à mon inputSql où je coche "use an existing connection", puis le passe par un tmap qui sort dans un PostgresOuput où je coche "use an existing connection".
et c'est en partant de cet ouput que je mets si ok alors commit si erreur alors rollback.
Et dans mon commit et rollback "close connection" est coché.

Je t'envoie une image de mon job si ça peut t'aider.


Est ce que tu a fait le test d'enlever le "tcommit" et de voir si tes données sont quand même insérée (avec l'utilisation de "use an existing connection")?
Car je sais que des fois j'oubliai le tcomit et après je ne comprenais pas pourquoi mes données ne s' insérait pas.

ça te permettrait de vérifier que ton objet Connection fonctionne bien...

Normalement sans objet d commit il ne doit pas commiter...
Images attachées
Type de fichier : jpg alimentation_t_evt_assistance.jpg (31,7 Ko, 23 affichages)
lolotte35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 14h56   #6
Invité de passage
 
Inscription : juillet 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 3
Points : 1
Points : 1
Comme prévu, c'était bien une bêtise de ma part. Le rollback ne fonctionne pas sur les tables de type MyIsam, il faut les passer en InnoDb.

Merci quand même pour votre aide
kingbabylon 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 03h34.


 
 
 
 
Partenaires

Hébergement Web