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 26/05/2011, 11h52   #1
Futur Membre du Club
 
Inscription : juin 2006
Messages : 217
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 217
Points : 16
Points : 16
Par défaut Remplacement ID code?

Bonjour

Je dois remplacer les ID d'une table c'est un peu compliquer à expliquer.
Donc j'ai deux bases de données (sql sever) on va dire base A et B.
de la base A j'ai inséré dans la base B tous les clients seulement dans la base B les ids sont re-générer. cela veut dire que si maintenant j'insère les produits des clients de la base A vers la B ben il ne corresponde plus à rien dans B.

En insèrent les clients dans la base B j'ai enregistrer les anciens id des clients de la base A dans une colonne.

Mais maintenant en insérant les produits de la base A vers B je voudrais remplacer les id des clients par les nouveaux id.

Code :
1
2
3
4
5
6
7
8
 
Base A
 
        client                   produit 
id  nom prenom           id id_client  nom 
4   ddd  eee             1     4         prod1  
5   aaa  rrr              2     5         prod2 
                          3     4         prod3

Code :
1
2
3
4
5
6
7
8
 
Base B
 
        client                                       produit 
id    id_clientA    nom prenom           id     id_client     nom 
12Z     4             ddd  eee           4E3     12Z         prod1  
7TR     5             aaa  rrr            FRT     7TR         prod2 
                                         YUY     12Z         prod3
Voila se que je voudrais obtenir.
Seulement avec talend je ne sais pas comment je dois faire cela.
Soit faire avec un tmap et du sql mais je c'est pas si on peut.
ou alors executer directement un script sql avec jointure etc.
Mais je ne c'est pas comment exécuter des scripts sql et comment faire des jointures sur les tables dans talend.

merci d'avance.
france38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 14h23   #2
Membre habitué
 
Avatar de bbl22
 
Inscription : février 2009
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 114
Points : 112
Points : 112
Bjr,

Effectivement, c'est un peut flou, personnellement, je n'ai pas très bien compris, pourrais-tu expliciter ton exemple avec ce que tu as dans tes deux tables et ce que tu souhaiterai obtenir dans ta base B.

Si j'ai compris, tu souhaite mettre à jour le champ id_client de la table produit en fonction du champ id de la table client?
Mais je ne comprends pas d'où vient les id 4E3,FRT.. dans la table produit.
Si l'on suppose que ces ids sont les mêmes dans la base A pour la table produit, tu pourrais faire :
voici doc ci-joint
__________________
bbl MeMa
bbl22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 14h48   #3
Futur Membre du Club
 
Inscription : juin 2006
Messages : 217
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 217
Points : 16
Points : 16
Oui je sais c'est un peu dur à expliquer.

Enfaite dans la base A il y a des id qui sont auto-incrementer, j'ai mis 4,5 dans la table client pour pas remettre 1,2. Jusque la normal il y a une table client une table produit avec un id_client pour la table produit qui permet de retrouver le client liée au produit.

Mais quand j'insère (copie) les données dans la table B les IDs sont générer automatiquement c'est pour ça que au lieu d'avoir dans la table client 4, 5 j'ai mit 12Z, 7TR pour les clients et 4E3, FRT, YUY pour les IDs produits. Seulement comme les ids sont générer automatiquement les id_client de la table produit (4,5,4) de la base A, ne sont plus bon pour la base B. C'est cela que je veux faire quand j'insère les produits dans la base B remplacer les id_client de la table produit de la base A par les nouveaux 12Z, 7TR, 12Z et ceci grâce a la colonne id_clientA qui correspond à l'ancien id du client de la base A.

J'espere que cela est plus clair maintenant.

Merci pour l'aide
france38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 17h22   #4
Membre habitué
 
Avatar de bbl22
 
Inscription : février 2009
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 114
Points : 112
Points : 112
je suis désolée, je ne vois pas comment tu peux faire ton update alors que tu n'as pas aucun lien entre les deux tables. Tu aurais eu un Id commun, tu aurais fait:
Code :
1
2
3
UPDATE produit SET id_client =
SELECT id FROM client
WHERE produit.id_commun = client = id_commun
Tes tables existent déjà, ou c'est toi qui les a modélisées. Il faut prendre le temps de bien concevoir ta base avant de comment le développement.

Quelqu'un pourrais peut être avoir une autre idée.

Bon courage
__________________
bbl MeMa
bbl22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 17h41   #5
Futur Membre du Club
 
Inscription : juin 2006
Messages : 217
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 217
Points : 16
Points : 16
Je comprend pas trop ou est l'id qui manque selon toi?

Non les deux exister déjà.
france38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 09h02   #6
Membre habitué
 
Avatar de bbl22
 
Inscription : février 2009
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 114
Points : 112
Points : 112
Ok, dans ce ca là, si les deux tables on un ID en commun, tu applique cette requête d'update après ton insert dans un tBaseRow:
Code :
1
2
3
UPDATE produit SET id_client =
SELECT id FROM client
WHERE produit.id_commun = client = id_commun
__________________
bbl MeMa
bbl22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h43.


 
 
 
 
Partenaires

Hébergement Web