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 :

passer une variable java dans un tBase


Sujet :

Développement de jobs

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 88
    Points : 14
    Points
    14
    Par défaut passer une variable java dans un tBase
    Bonjour,

    Ma problématique est la suivante.

    Je récupère une liste de string via une tache tJavaFlex (en lisant un fichier texte) que je sauve dans une variable de contexte.

    J'utilise cette variable de contexte dans une requete SQL de type SELECT * FROM MA_TABLE WHERE MA_TABLE.MON_CHAMPS IN (context.maVariabel de contexte) dans un composant tOracle.

    Jusque là pas trop de souci meme si je ne sais pas en terme de worflow pourquoi la tache tJavaFlex se lance forcement avant mon flow principal.

    Le souci c'est que ma liste contient plus de 1000 entrées et que le requete SQL elle aime pas ca.

    Du coup je me retrouve à splitter ma liste de string en bloc de 999 entrées masi je vois pas comment dynamiquement les passer à ma requête SQL dans mon composant java.
    Images attachées Images attachées  

  2. #2
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Points : 6 506
    Points
    6 506
    Par défaut
    Pourquoi tu ne fais pas une jointure entre ta BDD et ton fichier de string grâce au tMap en joignant sur le champ MA_TABLE.MON_CHAMPS ? Ce t'éviterai ce genre de désagrément.

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 88
    Points : 14
    Points
    14
    Par défaut
    Ok j'ai tenté ce que tu as dit mais le problème c'est que le composant tFileInputDelimited ne lit que le premier string de mon fichier texte.
    Chaque string est en fait un nombre séparé par un virgule, tous sur une seule ligne.
    Je ne vois pas pourquoi il ne lit que le premier et pas les autres, sinon à part cela le résultat semble être ce que je souhaite.

    J'ai essayé un lien iterate mais il refuse de le mettre entre mon fichier et ma tmap.

    Aurais-tu une idée qui me permettrait de parcourir tout le fichier.
    Images attachées Images attachées  

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 88
    Points : 14
    Points
    14
    Par défaut
    Bon alors la technique de récupérer mes enregistrements de base de données et de faire une jointure sur la clé primaire via un tMap avec ma liste de clé primaire contenue dans un fichier texte marche très bien.
    Mon problème maintenant est que ma table source fait 2 millions d'entrées et que requêter toute la table pour ne récupérer que 3000 entrées au final par exemple ca fait mal en terme de perf.
    Du coup je me retrouve à faire ma requête "select * from table where cleprimaire in (231231,32121)" mais toujours limité à 1000 occurrences.

    Quelqu'un a une idée ?

  5. #5
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Points : 6 506
    Points
    6 506
    Par défaut
    Ben ouai mais c'est la dure loi de l'ETL

    Après même si tu lis 2 000 000 de lignes et que tu ne t'en sers que de 3000 en sortie du lookup, les performances doivent être raisonnable non ? entre 5 à 10 min ?

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 88
    Points : 14
    Points
    14
    Par défaut
    Si la base est en locale surement, mais si je dois me balader sur le réseau bah ca peut prendre des heures.
    Sinon en fait avec ma fameuse table, ca m'a péter "java.lang.OutOfMemoryError: Java heap space" direct
    J'ai oublié de dire que ma table à 2M d'entrée elle a plus de 60 colonnes.

    Du coup vois tu comment je pourrais itérer sur un processus java qui donnerait à mon composant Oracle une variable contenant des groupes de clé primaire à insérer dans sa requête select * ... IN.
    Pour faire une sorte de requête UNION mais dynamique.

Discussions similaires

  1. passer une variable java dans une URL
    Par fragancia dans le forum Général Java
    Réponses: 4
    Dernier message: 09/05/2013, 02h11
  2. Passer une variable à javascript dans XML
    Par klod67 dans le forum XML/XSL et SOAP
    Réponses: 9
    Dernier message: 19/06/2007, 09h46
  3. [XSLT]passer une variable js dans une instruction xsl
    Par ounours dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 12/04/2007, 18h39
  4. Réponses: 3
    Dernier message: 26/06/2006, 13h48
  5. [Tableaux] passer une variable php dans une url
    Par griese dans le forum Langage
    Réponses: 27
    Dernier message: 12/06/2006, 09h02

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