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 10/10/2011, 16h48   #1
Invité de passage
 
Homme
Développeur informatique
Inscription : septembre 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : septembre 2011
Messages : 11
Points : 0
Points : 0
Par défaut Requête à partir d'un CSV

Bonjour à tous,

Je suis débutant sous Talend, et je recontre un problème.
Je vais essayer d'être assez clair.

Voilà, j'ai un fichier CSV en entrée, et dans celui-ci, je voudrais effectuer une requête SQL ligne par ligne, pour pouvoir récupérer un ID qui est stocker en base.

Ex:
voici mon fichier CSV type :
var1;var2;prix;effectif
abs25;plu52;20,12;5000
dfr10;mlt34;18,53;2500

J'aimerais donc sur la 1ère ligne récupérer l'ID de "abs25", sur la 2ème l'ID de "dfr10", etc...

Est-il possible de pouvoir faire cela?

Merci pour votre aide.
billyboy94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 18h32   #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
Oui c'est possible de faire cela, c'est même possible de le faire de plusieurs façons. L'une d'entre elle c'est d'utiliser un tFileInputDelimited qui va lire ton fichier puis à l'aide d'un tMap tu récupère la colonne qui t’intéresses c'est à dire l'id puis tu l'entoure du code de ta requête SQL (toujours dans les expressions du tMap). Après cette variable crée dans ton tMap tu la mets dans un tOracleRow ou bien un tOracleInput ( si ta base est Oracle sinon tu sais quoi faire ) et finalement tu récupère le resultat de ta requête dans un autre fichier ou bien juste dans un tLogRow comme bon te semble.
__________________
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 10/10/2011, 21h04   #3
Invité de passage
 
Homme
Développeur informatique
Inscription : septembre 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : septembre 2011
Messages : 11
Points : 0
Points : 0
Citation:
Envoyé par haskouse Voir le message
Oui c'est possible de faire cela, c'est même possible de le faire de plusieurs façons. L'une d'entre elle c'est d'utiliser un tFileInputDelimited qui va lire ton fichier puis à l'aide d'un tMap tu récupère la colonne qui t’intéresses c'est à dire l'id puis tu l'entoure du code de ta requête SQL (toujours dans les expressions du tMap). Après cette variable crée dans ton tMap tu la mets dans un tOracleRow ou bien un tOracleInput ( si ta base est Oracle sinon tu sais quoi faire ) et finalement tu récupère le resultat de ta requête dans un autre fichier ou bien juste dans un tLogRow comme bon te semble.
Merci pour ta réponse.
Je me pose quand même une petite question.
Je ne savais pas que l'on pouvais injecter du SQL dans le tMap!!
Si j'ai bien compris, dans mon tMap, je dois ajouter une variable ; et dans l'expression, je peux effectuer ma requête pour récupérer l'ID correspondant?
billyboy94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 10h35   #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
Bonjour,

En effet hier j'étais un peu pressé je n'ai pas pu détailler.
En fait on suppose que ton tMap tu as l'entrée row1.ID qui contient l'id en question, alors tu pourrais faire une sortie du tMap sous la forme suivante par exemple :

Code :
"select * from maTable where id = " + row1.ID.toString()
Tu pourrais faire ça directement dans les expressions ou bien dans les variables du tMap à toi de voir.

Après tu fais un lien vers un tOracleInput avec cette fois ci dans la requête la sortie de ton tMap.

J'éspère que j'ai été clair cette fois-ci.
__________________
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 11/10/2011, 10h37   #5
Invité de passage
 
Homme
Développeur informatique
Inscription : septembre 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : septembre 2011
Messages : 11
Points : 0
Points : 0
Citation:
Envoyé par haskouse Voir le message
Bonjour,

En effet hier j'étais un peu pressé je n'ai pas pu détailler.
En fait on suppose que ton tMap tu as l'entrée row1.ID qui contient l'id en question, alors tu pourrais faire une sortie du tMap sous la forme suivante par exemple :

Code :
"select * from maTable where id = " + row1.ID.toString()
Tu pourrais faire ça directement dans les expressions ou bien dans les variables du tMap à toi de voir.

Après tu fais un lien vers un tOracleInput avec cette fois ci dans la requête la sortie de ton tMap.

J'éspère que j'ai été clair cette fois-ci.
Merci, je vais testé cela de suite.
billyboy94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 11h39   #6
Invité de passage
 
Homme
Développeur informatique
Inscription : septembre 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : septembre 2011
Messages : 11
Points : 0
Points : 0
Finalement, je n'y arrive pas
En sortie, je n'ai aucune ligne!
Voici ce que j'ai fait :
Mon Job :

Mon tMap :


J'ai fait une erreur quelque part?
billyboy94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 12h22   #7
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
En fait d'après la miniature c'est ton tFileInput qui ne récupère rien. Vérifie que tu pointes sur le bon fichier et que le fichier contient bien des lignes. Et vérifie aussi que tu as mis les bons séparateurs de lignes de de colonnes.

De quelle format est ton fichier, et montre nous les propriétés de ton tFileInputDelimited.
__________________
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 11/10/2011, 12h28   #8
Invité de passage
 
Homme
Développeur informatique
Inscription : septembre 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : septembre 2011
Messages : 11
Points : 0
Points : 0
Voilà à quoi ressemble mon tFileInputDelimited :
Mon CSV est bien rempli, il y a ça dedans :
sas_var_prix;sas_var_eff;sas_var_poids;prix_moyen;effectif;poids
MYRGB24432TADU=;EMRGB24432TADU=;TORGB24432TADU=;12,12;15;6000
MYRGB24433BFAE-;EMRGB24433BFAE-;TORGB24433BFAE-;10,5;10;5000
billyboy94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 13h42   #9
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
Essai de faire ça au niveau de ton tFileInput, tu as apparemment un problème de séparateur de décimales et de milliers. (regarde la miniature)
Images attachées
Type de fichier : jpg Capturer.JPG (52,4 Ko, 3 affichages)
__________________
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 11/10/2011, 13h51   #10
Invité de passage
 
Homme
Développeur informatique
Inscription : septembre 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : septembre 2011
Messages : 11
Points : 0
Points : 0
Citation:
Envoyé par haskouse Voir le message
Essai de faire ça au niveau de ton tFileInput, tu as apparemment un problème de séparateur de décimales et de milliers. (regarde la miniature)
Super, c'était bien ça, Merci.

En revanche, dernier petit soucis.
Au lieu de m'afficher le résultat de ma requête, il m'affiche la requête entière ; c'est-à-dire qu'au lieu d'avoir mon ID en sortie, j'ai la requête d'afficher : select ID from ma_table where code = 'mon_code'.
Voilà à quoi ressemble mon fichier en sortie :

SELECT COD_VAR FROM VARIABLE WHERE SAS_VAR = 'MYRGB24432TADU=';12.12;15;6000
SELECT COD_VAR FROM VARIABLE WHERE SAS_VAR = 'MYRGB24433BFAE-';10.50;10;5000
billyboy94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 16h21   #11
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
Citation:
SELECT COD_VAR FROM VARIABLE WHERE SAS_VAR = 'MYRGB24432TADU=';12.12;15;6000
SELECT COD_VAR FROM VARIABLE WHERE SAS_VAR = 'MYRGB24433BFAE-';10.50;10;5000
Justement c'est à ça que sert le tMap, maintenant tu relies la sortie de ton tMap avec un tTypeDeBaseInput ou bien tTypeDeBaseRow et dans la requête tu mets la colonne qui contient la requête; et voilà le tour est joué.
__________________
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 11/10/2011, 17h24   #12
Invité de passage
 
Homme
Développeur informatique
Inscription : septembre 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : septembre 2011
Messages : 11
Points : 0
Points : 0
Citation:
Envoyé par haskouse Voir le message
Justement c'est à ça que sert le tMap, maintenant tu relies la sortie de ton tMap avec un tTypeDeBaseInput ou bien tTypeDeBaseRow et dans la requête tu mets la colonne qui contient la requête; et voilà le tour est joué.
Je n'arrive pas bien à comprendre pourquoi je n'ai rien à la sortie de mon tDBRow!!

billyboy94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 17h50   #13
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
là il s'agit d'un problème au niveau de ta base de donnée, essai de prendre la requête générée par Talend et de la tester directement sur la base sans passer par Talend pour voir ce qui cloche et après que tu seras sûr de ta requête et de son résultat tu retournes vers Talend pour l'intégrer dans ton Job, personnellement c'est comme ça que je procède mais à toi de voir. Bonne chance.
__________________
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 11/10/2011, 18h37   #14
Invité de passage
 
Homme
Développeur informatique
Inscription : septembre 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : septembre 2011
Messages : 11
Points : 0
Points : 0
Ok, dans tous les cas merci de m'avoir aider et d'avoir pris de ton temps surtout.

Je testerais tout cela demain.
billyboy94 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 02h36.


 
 
 
 
Partenaires

Hébergement Web