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

Talend Discussion :

Insert via tJAVA


Sujet :

Talend

  1. #1
    Membre habitué
    Homme Profil pro
    Stagiaire Décisionnelle
    Inscrit en
    juillet 2019
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Stagiaire Décisionnelle
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : juillet 2019
    Messages : 113
    Points : 151
    Points
    151
    Par défaut Insert via tJAVA
    Bonjour,

    je voulais savoir si TOS for ESB 7.1.1 avait un nombre limité de ligne pouvant être insérée grâce à un Insert dans un tJAVA. Je dois insérer des données issues de vues dans des tables et celà de façon dynamique, je dois donc mapper certaines données (par exemple les données au format DATE). Une fois correctement mapper je fais dans un tJAVA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@TEST", "TEST", "TEST");
    	if (conn != null) 
    	{
    		System.out.println("Connected to the database!");
    	} 
    	else 
    	{
    		System.out.println("Failed to make connection!");
    	}
    	Statement stmt = conn.createStatement();
    	stmt.executeUpdate("INSERT ALL INTO " + context.Table + " ( " + SelectTable + " ) VALUES " + InsertValueInTable + " SELECT 1 FROM DUAL");
     
    	conn.close();
    context.Table : table cible
    SelectTable : liste des collonnes de ma table cible
    InsertValueInTable : contient la liste des données de la vue source à insérer

    J'insere 897 ligne contenant 38 colonnes soit 34 086 valeurs.

    Lors de l'éxécution de mon Job j'obtiens l'erreur suivante: java.sql.SQLException: ORA-01722: Nombre non valide

    J'ai récupéré ma requête et je l'ai directement exécuté sous oracle et elle fonctionne correctement.

    Si une âme charitable peut me renseigner sur ce problème, je suis tout ouïe !

  2. #2
    Membre habitué
    Homme Profil pro
    Stagiaire Décisionnelle
    Inscrit en
    juillet 2019
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Stagiaire Décisionnelle
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : juillet 2019
    Messages : 113
    Points : 151
    Points
    151
    Par défaut
    J'ai essayé avec seulement 10 lignes et la requête fonctionne, j'en déduis donc que soit j'ai une erreur dans ma requête contenant toutes mes données ou alors Talend limite le nombre de ligne que l'on peut inserer en une seule fois.

    EDIT : Le INSERT ne fonctionne plus à partir de la 71 ème insertion ( 70 OK), j'ai vérifier les données et la ligne 71 est au même format que la 70ème...

  3. #3
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    octobre 2010
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : octobre 2010
    Messages : 673
    Points : 1 429
    Points
    1 429
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.SQLException: ORA-01722: Nombre non valide
    Tu as l'air de mettre des lettres dans des nombres...
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  4. #4
    Membre habitué
    Homme Profil pro
    Stagiaire Décisionnelle
    Inscrit en
    juillet 2019
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Stagiaire Décisionnelle
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : juillet 2019
    Messages : 113
    Points : 151
    Points
    151
    Par défaut
    Citation Envoyé par supergeoffrey Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.SQLException: ORA-01722: Nombre non valide
    Tu as l'air de mettre des lettres dans des nombres...
    J'effectue la même requête directement sous Oracle et elle fonctionne, toutes mes lignes sont insérées

    Par exemple tout fonctionne jusqu'à la ligne 70 :

    70,'','','','ID70','-1','750010002','88190','1','-1','','','','','','IDP70','','','Agence70','','','0','Reprise','Inactif','0','RESIDENCE1','Admin Dynamics','','','','','','','','','','','',''

    Et ma ligne 71 qui ne fonctionne pas :

    71,'','','','ID71','-1','750010002','30800','1','-1','','','','','','IDP71','','','Agence71','','','0','Reprise','Inactif','0','RESIDENCE2','Admin Dynamics','','','','','','','','','','','',''

  5. #5
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    octobre 2010
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : octobre 2010
    Messages : 673
    Points : 1 429
    Points
    1 429
    Par défaut
    Ce n'est pas toute la requête que tu nous donnes.
    D'ailleur as-tu essayé de loguer ta query ?

    C'est à dire remplacer
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    stmt.executeUpdate("INSERT ALL INTO " + context.Table + " ( " + SelectTable + " ) VALUES " + InsertValueInTable  + " SELECT 1 FROM DUAL");

    par
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            String query = "INSERT ALL INTO " + context.Table + " ( " + SelectTable + " ) VALUES " + InsertValueInTable + " SELECT 1 FROM DUAL";
            System.out.println(query);
    	stmt.executeUpdate(query);

    Pour nous SelectTable et InsertValueInTable sont des inconnus.
    J'ai l'impression que tu nous as donné des valeurs de InsertValueInTable mais pas de SelectTable
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  6. #6
    Membre habitué
    Homme Profil pro
    Stagiaire Décisionnelle
    Inscrit en
    juillet 2019
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Stagiaire Décisionnelle
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : juillet 2019
    Messages : 113
    Points : 151
    Points
    151
    Par défaut
    Citation Envoyé par PandaRasta Voir le message
    J'effectue la même requête directement sous Oracle et elle fonctionne, toutes mes lignes sont insérées

    Par exemple tout fonctionne jusqu'à la ligne 70 :

    70,'','','','ID70','-1','750010002','88190','1','-1','','','','','','IDP70','','','Agence70','','','0','Reprise','Inactif','0','RESIDENCE1','Admin Dynamics','','','','','','','','','','','',''


    Et ma ligne 71 qui ne fonctionne pas :

    71,'','','','ID71','-1','750010002','30800','1','-1','','','','','','IDP71','','','Agence71','','','0','Reprise','Inactif','0','RESIDENCE2','Admin Dynamics','','','','','','','','','','','',''

    ERRATUM :

    En faite ma ligne 71 correspond à ceci :
    71,'','','','ID71','-1','750010002','30800','1','-1','','','','','','IDP71','','','Agence71','','','8.75','Reprise','Inactif','0','RESIDENCE2','Admin Dynamics','','','','','','','','','',TO_DATE(SUBSTR('2018-02-20 02:00:00.0' ,1,19), 'YYYY-MM-DD HH:MI:SS'),'',''

    Et ma ligne 70 à ceci :
    70,'','','','ID70','-1','750010002','29200','1','-1','','','','','','68F639FD-BD40-E611-80CE-0050568D6268','','','Agence Ouest','','','0','Reprise','Inactif','0','RESIDENCE2','Admin Dynamics','','','','','','','','','','','','') SELECT 1 FROM DUAL

  7. #7
    Membre habitué
    Homme Profil pro
    Stagiaire Décisionnelle
    Inscrit en
    juillet 2019
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Stagiaire Décisionnelle
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : juillet 2019
    Messages : 113
    Points : 151
    Points
    151
    Par défaut
    Citation Envoyé par supergeoffrey Voir le message
    Ce n'est pas toute la requête que tu nous donnes.
    En faite l'erreur vient du NLS_LANG, la base oracle possède un NLS_LANG = ., alors que mon jdbc sur talend le NLS_LANG = ,.
    Du coup j'ai une erreur sur la valeur 8.75
    71,'','','','ID71','-1','750010002','30800','1','-1','','','','','','IDP71','','','Agence71','','','8.75','Reprise','Inactif','0','RESIDENCE2','Admin Dynamics','','','','','','','','','',TO_DATE(SUBSTR('2018-02-20 02:00:00.0' ,1,19), 'YYYY-MM-DD HH:MI:SS'),'',''

    J'ai donc modifié la connection afin de définir le paramètre NLS_LANG comme celui sur la base Oracle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String url = "url";
    Properties info = new Properties();
    info.setProperty("user", "user");
    info.setProperty("password", "password");
    info.setProperty("NLS_LANG", ",.");
    Connection conn = DriverManager.getConnection(url, info);
    Au final rien à voir avec Talend c'était une erreur de JDBC Java.

    PS : SelectTable contient toutes mes colonnes de la table et context.Table contient ma table

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

Discussions similaires

  1. [PDO] Insert via l'extension PDO
    Par shensi dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 01/12/2010, 07h40
  2. Insert via Formulaire
    Par calagan99 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 07/05/2007, 12h44
  3. [Hibernate 3] [HQL] Faire un Insert via HQL
    Par bouchette63 dans le forum Hibernate
    Réponses: 3
    Dernier message: 09/11/2006, 18h05
  4. PB d'insertion via formulaire
    Par xtiand4 dans le forum Langage
    Réponses: 5
    Dernier message: 23/06/2006, 10h45
  5. [Help] pb d'insertion via PHP ...
    Par romtrash dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 19/04/2005, 12h47

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