IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement de jobs Discussion :

Exécuter un select à partir d'un XML


Sujet :

Développement de jobs

  1. #1
    shewy80
    Invité(e)
    Par défaut Exécuter un select à partir d'un XML
    Bonjour à tous

    Je ne comprend pas mes erreurs. J'essaie désespéramment d'exécuter une requête SQL à partir d'un ID issu d'un XML.

    Le but du "jeu"
    >> pour chaque "id_product" issu du XML,
    faire un select de cette référence dans la bse de données Mysql permettant de savoir
    -1 la référence existe ou non
    -2 si elle existe savoir s'il est actif ou non

    J'ai donc :

    tFileInputXML -> (main) -> TFlowToIterate -> (iterate) -> MySqlRow -> (main) -> tFileOutputDelemited



    Dans le TFileInputXML dans Mapping [ Column : "prd_id" || Xpath "prd_id"

    Pour le SQL :
    SELECT ps_product.active from ps_product where ps_product.id_manufacturer='6' and ps_product.id_product='((Integer)globalMap.get("row2.prd_id"))' ;"


    Pour les erreurs :
    Erreur de syntaxe, insérez ";" pour effectuer l'instruction
    Erreur de syntaxe sur le sème "prd_id", AssignmentOpérator était attendu
    NameSpaceTool_tFileInputXML_1 n'est pas reconnu.


  2. #2
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Salut,

    Est-ce que ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ps_product.active from ps_product where ps_product.id_manufacturer='6' and ps_product.id_product='((Integer)globalMap.get("row2.prd_id"))' ;"
    Est exactement ce que tu as mis dans ton tMySqlRow ?

    Si oui, plusieurs remarques:
    1) il faut que tu construises ta chaîne en concaténant le code SQL et tes variables java. Ici, ça donnerait plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT ps_product.active from ps_product where ps_product.id_manufacturer='6' and ps_product.id_product='" + ((Integer)globalMap.get("row2.prd_id")).toString() + "'"
    Je ne sais pas si tes erreurs viennent de là mais c'est fort possible !
    2) je ne sais pas ce que vous avez à utiliser des tMysqlRow/tOracleRow au lieu des tMysqlInput/tOracleInput/tMysqlOutput/tOracleOutput ? Tu peux utiliser un tMysqlInput au lieu de ton tMysqlRow (pense aussi à ouvrir la connexion avant à l'aide d'un tMysqlConnection histoire d'éviter de l'ouvrir à chaque itération).
    3) quel est le but final ? Parce que là, tu créés seulement un fichier avec une donnée dedans, ça me semble étrange

  3. #3
    shewy80
    Invité(e)
    Par défaut
    Bonjour

    Effectivement je n'ai plus aucune erreur avec une chaine concaténée.

    Le but du "bouzin" ... effectivement ce n'est pas simplement mettre dans un CSV. En fait je ne connais pas du tout Talend. J'ai commencé à m'y plongé il y a peine un mois.
    J'ai lu des docs, regarder des tutos sur Youtube etc ...

    c'est vraiment impressionnant !

    Du coup je me suis lancé en tête de remplacer mon application que j'ai développé en PHP.
    Cette appli télécharge un fichier XML chez un grossiste, puis pour chaque référence du XML vient mettre à jour ma base de données prestashop.
    si le produit n'existe pas, le script vient l"ajouter. Il télécharge automatiquement les images produits, calcul les prix, ajoute les gammes ou les déclinaisons etc ...
    De même si un produit n'est plus dans le XML il vient me le supprimer de mon prestashop.

    ça fonctionne plutot pas mal, mais le temps de traitement est long !
    rien que pour la partie MAJ du XML, avec Talend ça me prend à tout casser 30secondes avec l'upload en FTP en sus.
    mon php lui mettait des plombes ...

    Quand à la mise à jours des catégories. (aussi extrait depuis le xml -> Prestashop en ajout-suppression)
    mon PHP tournait facilement 1 à2 minutes. Talend me fait ça en 20 secondes !

    tu l'auras compris le plus dur reste à faire, mais petit à petit j'avance.
    Pour les produits je vais me heurter à bon nombres de problemes. Le premier est de récupérer l'ID d'un produit dans prestashop.
    Savoir si mon produit existe ou non ... ensuite toutes les autres requêtes seront basées sur cet ID.

    C'est l'objet de la petite requete que tu viens de me dépanner.

    voilà tu sais tout

    merci de ton aide en passant

  4. #4
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Je comprends. Je te confirme que tu pourrais utiliser les tMysqlInput : ça serait plus simple à lire (et tu pourras connaître le nombre de lignes lues ce qui est pratique ensuite).

    Ensuite, tu peux utiliser le nombre de lignes que ton composant récupère pour savoir si un produit existe ou pas et si tu dois utiliser l'id (tu tapes tMysql + Ctrl + Espace dans du code Java et Talend va te proposer des méthodes que tu peux utiliser pour récupérer des infos, ça marche pour tous les composants et c'est parfois super utile si tu ne connaissais pas ).

    Joli projet en tout cas, bon courage

  5. #5
    shewy80
    Invité(e)
    Par défaut
    Merci beaucoup. non je ne connaissais pas. Je vais essayer ce wend
    J'avance doucement mais surement.
    il me manque encore beaucoup de chose. je suis loin de maîtriser l'outil et toutes les possibilités qu'il offre !
    je vais voir si autour de moi des zamis ne pourrai pas m'aider.

    Merci de ton aide et tes conseils !

Discussions similaires

  1. [XSLT]select sur plusieur documents XML
    Par jesus144 dans le forum XMLRAD
    Réponses: 3
    Dernier message: 15/06/2005, 10h56
  2. Select à partir d'un debut de numéro ...
    Par Le_Phasme dans le forum Langage SQL
    Réponses: 4
    Dernier message: 01/03/2005, 13h41
  3. Exécuter un fichier à partir du code
    Par TheCool dans le forum ASP
    Réponses: 28
    Dernier message: 18/01/2005, 19h22
  4. Validation de données à partir d'un XML Schema
    Par leup dans le forum Valider
    Réponses: 2
    Dernier message: 10/06/2004, 08h30
  5. SELECT à partir du ROWNUM
    Par MrSimon dans le forum SQL
    Réponses: 5
    Dernier message: 10/06/2003, 16h28

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