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

Autres outils Discussion :

[TOS DI][v3.2.3] Comment récupérer les résultats de sql loader ?


Sujet :

Autres outils

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Points : 9
    Points
    9
    Par défaut [TOS DI][v3.2.3] Comment récupérer les résultats de sql loader ?
    Bonjour à tous,
    J'ai un job qui fonctionne avec le composant tOracleOutputBulkExec. Le job utilise donc sql loader. Une fois mon job fini, j'ai un message de ce style dans la console de Talend:
    "Point de validation (COMMIT) atteint - nombre d'enregis. logiques 7"
    Et un code de sortie 0.
    Parfait, sauf que mes 7 enregistrements ne se sont pas si bien passé que ca puisque en fait j'ai 7 erreurs de ce genre :
    "ORA-00001: violation de contrainte unique".
    Je peux lire ces erreurs en allant visualiser le fichier "monfichier.ctl.log" que génère sql loader.
    Ma question : Quelle est la meilleure façon de récupérer les erreurs présente dans le fichier que génère sql loader (monfichier.ctl.log) à la fin de l'insert puis de les envoyer au tLogCatcher pour qu'elles s'affichent de la même façon que toutes les autres erreurs de mes jobs ?

    PS : J'utilise Java 1.5.0_22

  2. #2
    Membre averti
    Avatar de l4r3nZu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2010
    Messages : 154
    Points : 423
    Points
    423
    Par défaut
    Je n'ai pas testé mais ton composant te retourne cette globalVar : ((String)globalMap.get("tMysqlBulkExec_1_ERROR_MESSAGE"))

    A tester ...

    Bon courage

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Points : 9
    Points
    9
    Par défaut
    Malheureusement, un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("tMysqlBulkExec_1_ERROR_MESSAGE="+((String)globalMap.get("tMysqlBulkExec_1_ERROR_MESSAGE")));
    renvoie un :
    tMysqlBulkExec_1_ERROR_MESSAGE=null

    Alors qu'il y a bien eu des erreurs d'insert avec Sql Loader

  4. #4
    Membre émérite
    Avatar de haskouse
    Homme Profil pro
    Salesforce
    Inscrit en
    Août 2009
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Salesforce
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2009
    Messages : 923
    Points : 2 684
    Points
    2 684
    Par défaut
    Pourquoi tu ne lis pas "monfichier.ctl.log" avec un tFileInput tout simplement.
    "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)

    Tutoriels Talend
    Mes articles publiés
    Mon CV en-ligne

  5. #5
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Points : 9
    Points
    9
    Par défaut
    Je vous présente ma solution (sans tFileInput, j'ai vu le message bien après ) :
    J'ai utilisé un composant tJava avec ce code (simplifié) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    java.util.Scanner scanner = new java.util.Scanner(new java.io.FileReader(context.MONFIC +".ctl.log"));
    String line = null;
    Integer errorSqlLoader = 0;
    while (scanner.hasNextLine()) {
    	line = scanner.nextLine();
    	if (line.matches(".*ORA-.*")){
    		errorSqlLoader++;
    	}
    }
     
    globalMap.put("errorSqlLoader",errorSqlLoader);
    Puis un If entre le tJava et le tWarn qui sera catché par le tLog avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((Integer)globalMap.get("errorSqlLoader")) != 0
    C'est pas parfait, mais ca fonctionne. Si ça peut aider quelqu'un.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/03/2012, 22h47
  2. Réponses: 5
    Dernier message: 08/03/2010, 14h09
  3. Comment récupérer les résultats d'une requete SQL?
    Par verbal34 dans le forum Accès aux données
    Réponses: 2
    Dernier message: 13/02/2008, 09h17
  4. Réponses: 3
    Dernier message: 23/01/2004, 21h02
  5. Comment récupérer les adresses WWW dans Internet Explorer ?
    Par chaours dans le forum Web & réseau
    Réponses: 7
    Dernier message: 03/09/2003, 14h27

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