1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2017
    Messages : 8
    Points : 4
    Points
    4

    Par défaut Sélectionner un fichier dans un dossier et le charger dans la base de données

    Bonjour bonjour,

    Je débute en Talend et j'ai un soucis.
    Je dois charger un fichier .csv dans une base de données postgreSQL.
    Mon fichier .csv est dans un dossier mais son nom va changer tous les mois (je le récupère et le charge dans la base de données une fois par mois). Est-ce possible de dire à Talend de récupérer un fichier .csv sans lui donner son nom exact ? Sachant qu'il n'y aura que ce fichier .csv dans le dossier.

    Deuxième problème, lorsque je charge mon fichier .csv dans ma base de données, cette erreur apparaît :
    "[statistics] connected
    L'élément du batch 0 INSERT INTO "public"."project" ("business_unit","name","project_manager_name","first_deputy_manager_name","second_deputy_manager_name","currency") VALUES (123,Projet1,MadameA,MonsieurC,MonsieurA,EUR) a été annulé. Appeler getNextException pour en connaître la cause.
    [statistics] disconnected
    " Que faut-il faire ?

    Merci d'avance !!

    Manon

  2. #2
    Membre confirmé
    Profil pro
    MOA
    Inscrit en
    décembre 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : décembre 2002
    Messages : 616
    Points : 586
    Points
    586

    Par défaut

    Bonjour,

    1./
    Moi également, je débute sur Talend. Tu devrais parcourir les composants de Talend existant dans la documentation comme ici : https://help.talend.com/display/Comp...omposants+File
    Tu as en effet un composant qui te permet d'explorer un répertoire, de lister que ce soit à distant avec les composants FTP, SCP qu'en local.

    Sinon l'autre possibilité est de récupérer le nom du fichier dans la base de donnée

    2./ L'erreur provient de ta requête générée. Je te parie que si tu l’exécute manuellement dans un client SQL tel que SQLDevelopper, elle ne fonctionnera pas. Ce qui me surprends quand je lis ta requete, tu n'as pas de doubles quote pour insérer tes valeurs. Il faudrait trouver l'option dans un de tes composant Talend d'encapsuler tes chaines de caractères avec des ".
    Mais avant, teste ta requête manuellement. C'est le premier truc à faire

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2017
    Messages : 8
    Points : 4
    Points
    4

    Par défaut

    Bonjour,

    Merci pour votre réponse mais ce n'est pas moi qui génère la requête. Je lui demande juste de charger la base de données

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    mai 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : mai 2012
    Messages : 16
    Points : 24
    Points
    24

    Par défaut

    Salut,

    Oui c'est possible de traiter le fichier sans avoir d'avance son nom
    Tu peux utiliser le composant tFileList qui point vers le dossier qui contient le fichier
    ca va te donner un truc de ce genre :
    Nom : 3.png
Affichages : 55
Taille : 3,4 Ko
    dans le nom de fichier de ton iFileInput tu mets le variable global, dans mon cas : ((String)globalMap.get("tFileList_2_CURRENT_FILEPATH"))

    Pour ta seconde question tu cherches à charger les données comment ? tu peux mettre un screen de ton job ?

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2017
    Messages : 8
    Points : 4
    Points
    4

    Par défaut

    Bonjour,

    Merci pour votre réponse
    Pour mon tFileInputDelimited je ne peux donc pas le créer directement dans les métadonnées (à gauche) ? Car il ne reconnaît pas le chemin... Il faut le créer directement dans le job ?

    En fait j'ai un fichier .csv contenant 37 colonnes et je dois alimenter 3 tables différentes avec ces colonnes (sachant que la première table récupérera les 8 premières colonnes, la deuxième table récupérera d'autres colonnes, etc). Une des tables sera même alimentée plusieurs fois (car c'est un historique). Est-ce possible de faire ça ? :

    Nom : a.JPG
Affichages : 51
Taille : 51,4 Ko

    Sachant que la table en bas est la même qui s'alimente 12 fois (une fois par mois). Je ne peux pas encore tester si ça marche mais selon vous est-ce possible ? Sinon comment faire pour alimenter une même table plusieurs fois avec un seul .csv ?

    Merci d'avance
    Images attachées Images attachées  

  6. #6
    Membre confirmé
    Profil pro
    MOA
    Inscrit en
    décembre 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : décembre 2002
    Messages : 616
    Points : 586
    Points
    586

    Par défaut

    Citation Envoyé par ManMan04 Voir le message

    Citation Envoyé par weed Voir le message
    2./ L'erreur provient de ta requête générée. Je te parie que si tu l’exécute manuellement dans un client SQL tel que SQLDevelopper, elle ne fonctionnera pas. Ce qui me surprends quand je lis ta requete, tu n'as pas de doubles quote pour insérer tes valeurs. Il faudrait trouver l'option dans un de tes composant Talend d'encapsuler tes chaines de caractères avec des ".
    Mais avant, teste ta requête manuellement. C'est le premier truc à faire
    Bonjour,

    Merci pour votre réponse mais ce n'est pas moi qui génère la requête. Je lui demande juste de charger la base de données
    Que ta requête SQL soit généré automatiquement par Talend via un composant ou écrite manuellement, le problème reste le même. La requête est généré et executé automatiquement par ton script Talend quand tu doubles cliques sur ton script Talend. Il faut donc tester étape par étape pour identifier l'étape bloquant.


    La question est de savoir si la requête que Talend exécute est au moins bonne ? Est ce que le schéma est correcte par rapport à la requête ? (nom des champs, typages, ...)
    Pour isoler ce cas, pour être certains que la requête (exécuté par ton script Talend) est correcte, il faut l’exécuter manuellement.

    Dans l'erreur, qu'il a retourné, tu as pas mal d'info, tu as le nom de la base de donnée (public), le nom de la table et le nom des champs.

  7. #7
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    décembre 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : décembre 2016
    Messages : 42
    Points : 69
    Points
    69

    Par défaut

    si j’ai compris ton problème, tu veux charger un fichier dans 3 tables
    1. tFileInputDelimieted : comme paramètres, tu as :
    a. le chemin
    b. la structure (Edit schema)
    c. ….
    2. tOracleOutput (ou tMySqlOutput ou …) permettent tous de charger un flux de données dans la base de donnée

    j'ai bien voulu illustrer par des images, mais ajouter une image sur ce site, c'est la galère totale

    voici le job final (considérer * comme espace)

    ********iterate*************************main****************sortie 1 (8 premières colonnes)
    tFileList ----------> tFileInputDelimieted ---------------------->tmap-----------------------------------------> tOracleOutput 1
    *********************************************************sortie 2 (x prochaines colonnes)
    *****************************************************-----------------------------------------> tOracleOutput 2
    *********************************************************sortie 3 (Y dernières colonnes)
    *****************************************************-----------------------------------------> tOracleOutput 3

    Le script, pour chaque fichier va charger les 8 premières colonnes dans la première table ...

    Écris moi en inbox si c'est pas claire pour toi.

    Bonne journée
    wcfsmart

Discussions similaires

  1. Réponses: 9
    Dernier message: 31/07/2014, 17h45
  2. Réponses: 1
    Dernier message: 09/05/2012, 11h39
  3. sélectionner des fichiers et des dossiers
    Par bog333 dans le forum GTK+
    Réponses: 3
    Dernier message: 23/12/2008, 17h31
  4. Réponses: 3
    Dernier message: 07/02/2008, 14h34
  5. Réponses: 7
    Dernier message: 08/01/2007, 20h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo