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 24/06/2008, 12h27   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 60
Points : 11
Points : 11
Par défaut Insérer un élément qu'une fois

Je pars d'un ficher Excel de 40 000 lignes contenant par exemple la ville "Nantes" 3000 fois, je voudrais l'extraire dans une table "Ville" avec un identifiant mais qui soit créé qu'une seule fois (et non 3000).

J'utilise une tMap mais le problème c'est qu'on ne peut pas mettre de code sql dans celle-ci donc je vois pas comment faire. Faut-il alors passer par autre chose ? Ou y'a-t-il un moyen bien plus simple qui m'a échappé ?



ps: j'ai déjà regardé d'autres posts mais cela ne m'a pas éclairci car cela semblait bien plus compliqué que moi
docky est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 14h09   #2
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
plusieurs possiblités :

- un tUniqueRow sur ta colonne ville
- tu fais un update or insert dans ton output avec ta ville en clé

cordialement,
Benoit_Durand est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 14h28   #3
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 60
Points : 11
Points : 11
J'avais essayé avec tUniqueRow mais j'avais dû me louper avec
En tout cas ça marche avec update or insert, merci.
docky est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 14h48   #4
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
En terme de performance c'est pourri pour de gros volumes.
Benoit_Durand est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 14h58   #5
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 60
Points : 11
Points : 11
Citation:
Envoyé par Hebus_Beer Voir le message
En terme de performance c'est pourri pour de gros volumes.
laquelle des solutions est pourrie ?
moi avec 40 000 lignes ça rame un peu là quand même
docky est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 17h48   #6
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
le update or insert car il va faire un insert de nantes puis 2999 updates

ca marche mais c'est porc, il vaut mieux passer par un tUnique
Benoit_Durand est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 19h20   #7
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 60
Points : 11
Points : 11
oui en effet j'ai essayé et c'est vrai que c'est plus rapide le tUnique.
docky est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 10h18   #8
Membre habitué
 
Inscription : janvier 2008
Messages : 45
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2008
Messages : 45
Points : 136
Points : 136
Bonjour,
Je vous rejoint dans votre discution.
J'ai rencontré le meme problème moi aussi et votre discution répond à ma question. Sauf que j'ai remarqué qu'il y a un "Insert or Update" et "Update or Insert" j'aimerai bien savoir quelle est la différence entre les deux.
J'ai testé les deux, je n'ai remarqué aucune différence.

Merci d'avance.
Juliana est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 12h17   #9
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
A vérifier :

le update or insert fait un update si ca ne fait aucun update alors il insert

le insert or update fait un insert si ne fonctionne pas (contrainte d'intégrité) alors il fait un update
Benoit_Durand est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 15h53   #10
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 60
Points : 11
Points : 11
oui je crois que c'est ça.

j'ai un autre souci du même type mais pas résolvable avec tUniqRow.

si maintenant par exemple dans une TABLE1 j'ai une ville "Nantes" (champ nom) avec une clé primaire de 15 (champ id)
dans une TABLE2 j'ai une ville Nantes (champ nom) avec une clé primaire de 10 (champ id).
Imaginons que je veuille charger "Nantes" de la TABLE1 vers la TABLE2. S'il n'y a pas d'ID15 dans la TABLE2 cela va marcher mais Nantes sera en doublon. J'aimerais pouvoir vérifier le champ nom des deux tables et donc insérer que si le champ nom de la TABLE1 n'existe pas dans TABLE2.

En sql je pense que c'est largement faisable mais avec Talend
docky est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 16h09   #11
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
select t1.ville from t1 left outer join t2 on t1.ville=t2.ville
where t2.id is null

Cela retournera les villes de t1 non déjà présentes dans t2.

Tu peux simuler la jointure avec un tMap (à éviter avant la 2.4, non testé avec la 2.4).
Benoit_Durand est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2008, 15h39   #12
Candidat au titre de Membre du Club
 
Inscription : septembre 2008
Messages : 40
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 40
Points : 10
Points : 10
Par défaut clef primaire

Bonjour

j'ai un peu le même problème sauf que c'est avec un fichier csv.

J'ai une clef primaire ARR_IDPP dans mon fichier csv que je dois insérer dans ma table arr_reprise (dont le champ n'est pas une clef primaire).

Je suis obligé de faire un tMap pour récupérer toutes les erreurs de chaque ligne.
Pour la primary key, j'ai essayé de faire un tPostgresqlInput que je lie avec mon tMap et je compare dans mon tMap la colonne ARR_IDPP avec la colonne arr_reprise de ma table, mais cela ne fonctionne pas, car quandil n'y a rien dans ma table, je peux insérer même s'il y a plusieurs fois la même valeur de ARR_IDPP et lorsque je relance mon job, là plus rien ne marche car les ARR_IDPP sont déjà présents dans la table....

Avez-vous une idée?

merci

tomlaurent
tomlaurent est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2008, 10h32   #13
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
un tUniqRow ne suffirait pas à résoudre ton problème pour n'insérer qu'un seul ARR_IDPP ? Sinon dans ton output il y a pas moyen de faire un update or insert sur cette colonne ?

cdt,
Benoit_Durand est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2008, 10h48   #14
Candidat au titre de Membre du Club
 
Inscription : septembre 2008
Messages : 40
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 40
Points : 10
Points : 10
Par défaut clef primaire

le problème d'un tUniqRow, c'est qu'il va me retirer la ligne ou il y a des doublons. En effet, j'ai besoin de mettre un tMap pour récupérer toutes les erreurs qu'il peut y avoir sur une ligne et de plus je peux définir mes messages d'erreurs comme ca.
N'y a t-il pas une sorte de méthode pour voir si ARR_IDPP est unique . J'ai vu qu'il existait une méthode isUnique, mais je n'ai pas réussi à l'utiliser.

Sinon j'ai essayé de faire insert or Update (et l(inverse) mais je n'ai vu aucune différence.

J'ai aussi voulu faire un tUniqRow et de créer deux liens vers deux tMap différents, mais c'est impossible à faire.
tomlaurent 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 17h56.


 
 
 
 
Partenaires

Hébergement Web