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 30/06/2011, 11h03   #1
Candidat au titre de Membre du Club
 
Femme Corinne
Développeur informatique
Inscription : mai 2011
Messages : 24
Détails du profil
Informations personnelles :
Nom : Femme Corinne
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mai 2011
Messages : 24
Points : 12
Points : 12
Par défaut Série de UPDATE sur une table

Bonjour,

Je cherche à faire une série de UPDATE sur ma table QB_INDEX.
Je voudrais obtenir l'équivalent du script suivant :

Code :
1
2
3
4
UPDATE qb_index i SET i.r_part2 = (SELECT  colname FROM dpt_syscolumns s 		WHERE  s.dpt_syscolumns.tabname = i.tabname 			AND s.colno = i.r_part2			AND i.departement = s.departement) WHERE i.r_part2 != 0
UPDATE qb_index i SET i.d_part2 = (SELECT  colname FROM dpt_syscolumns s 		WHERE  s.dpt_syscolumns.tabname = i.tabname 			AND s.colno = i.d_part2			AND i.departement = s.departement) WHERE i.d_part2 != 0
UPDATE qb_index i SET i.r_part1 = (SELECT  colname FROM dpt_syscolumns s 		WHERE  s.dpt_syscolumns.tabname = i.tabname 			AND s.colno = i.r_part1			AND i.departement = s.departement) WHERE i.r_part1 != 0
UPDATE qb_index i SET i.d_part1 = (SELECT  colname FROM dpt_syscolumns s 		WHERE  s.dpt_syscolumns.tabname = i.tabname 			AND s.colno = i.d_part1			AND i.departement = s.departement) WHERE i.d_part1 != 0
J'ai créé un fichier texte qui contient la liste des champs à mettre à jour :
Code :
1
2
3
4
r_part2
d_part2
r_part1
d_part1
Et je cherche à passer mes UPDATE dans un tBaseRow avec le schéma suivant :
tFileInputDelimited-->tFlowToIterate-->tIterateToFlow-->tBaseRow-->tBaseCommit


Dans mes composant iterate, le schéma comporte un seul champ : le nom du champ à mettre à jour.
Dans mon tBaseRow, j'ai la requête suivante :
Code :
1
2
3
4
5
6
7
"UPDATE qb_index i 
SET i."+ row1.nameField+" = 
	(select  colname from dpt_syscolumns s 
		where  s.dpt_syscolumns.tabname = i.tabname 
			and s.colno = i."+row1.nameField+" 
			and i.departement = s.departement) 
WHERE i."+row1.nameField+" != 0"
Quand j'exécute j'ai l'erreur "A syntax error has occurred." à chaque itération.

J'ai contrôlé la construction de mes requêtes UPDATE avec un tMap+tLogRow à la place de mon tBaseRow et mes requêtes sont bonnes.

Quelqu'un voit-il pourquoi ?

Auriez-vous une autre idée (d'autres composants Talend peut-être) pour faire la même chose ?

Merci pour votre aide, mon problème est assez urgent.
Corinne
briochette38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 12h48   #2
Membre Expert
 
Avatar de haskouse
 
Homme Mustapha EL HASSAK
Ingénieur développement logiciels
Inscription : août 2009
Messages : 627
Détails du profil
Informations personnelles :
Nom : Homme Mustapha EL HASSAK
Âge : 26
Localisation : Maroc

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Finance

Informations forums :
Inscription : août 2009
Messages : 627
Points : 1 514
Points : 1 514
Bonjour,

Quand tu as récupéré le texte de ta requête, est ce que tu l'as testé directement sur ta base ??
Est ce que ça a marché ?
__________________
Le savant qui enseigne le bien aux gens et ne le met pas en pratique, est semblable à la torche qui éclaire en se brûlant. "Mohammed le Messager d’Allah" (que la paix et le salut d'Allah soient sur lui)

Mes articles publiés
haskouse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 14h30   #3
Candidat au titre de Membre du Club
 
Femme Corinne
Développeur informatique
Inscription : mai 2011
Messages : 24
Détails du profil
Informations personnelles :
Nom : Femme Corinne
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mai 2011
Messages : 24
Points : 12
Points : 12
Oups en effet j'ai introduit une erreur de syntaxe en écrivant :
Code :
UPDATE qb_index i SET i.r_part2 = (SELECT  colname FROM dpt_syscolumns s 		WHERE  s.dpt_syscolumns.tabname = i.tabname 			AND s.colno = i.r_part2			AND i.departement = s.departement) WHERE i.r_part2 != 0
au lieu de :
Code :
UPDATE qb_index SET r_part6 = (SELECT  colname FROM dpt_syscolumns WHERE  dpt_syscolumns.tabname = qb_index.tabname AND colno = qb_index.r_part6 AND qb_index.departement = dpt_syscolumns.departement) WHERE r_part6 != 0 ;
Il semble que l'alias de la table qb_index ne soit plus reconnu dans le select de ma table dpt_syscolumns.

Merci pour ta remarque fort judicieuse haskouse
briochette38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 15h17   #4
Membre Expert
 
Avatar de haskouse
 
Homme Mustapha EL HASSAK
Ingénieur développement logiciels
Inscription : août 2009
Messages : 627
Détails du profil
Informations personnelles :
Nom : Homme Mustapha EL HASSAK
Âge : 26
Localisation : Maroc

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Finance

Informations forums :
Inscription : août 2009
Messages : 627
Points : 1 514
Points : 1 514
Y'a pas de quoi
Si c'est résolu merci de mettre le fameux

Bonne chance pour la suite.
__________________
Le savant qui enseigne le bien aux gens et ne le met pas en pratique, est semblable à la torche qui éclaire en se brûlant. "Mohammed le Messager d’Allah" (que la paix et le salut d'Allah soient sur lui)

Mes articles publiés
haskouse 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 03h40.


 
 
 
 
Partenaires

Hébergement Web