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.

  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