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 :

Truncate table et insérer dans la table des données issues d'une vue


Sujet :

Développement de jobs

  1. #1
    Membre actif
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2019
    Messages : 134
    Points : 209
    Points
    209
    Par défaut Truncate table et insérer dans la table des données issues d'une vue
    Bonjour,

    je travaille actuellement sous Talend 7.1.1 ESB et j'ai besoin de créer un JOB qui permet:
    1 : de récupérer l'ID max de ma table (Fait) puis on l'incrément (Comment faire un incrémentation?),
    2 : ensuite je dois TRUNCATE ma table (ERREUR: Exception in component tDBOutput_1 (ODS_TEMPF_PROGRAMMES_TRUNCATE)
    java.sql.SQLSyntaxErrorException: ORA-00942: Table ou vue inexistante). Voici mon schéma concernant cette partie: Nom : TruncatetDBOutput.PNG
Affichages : 1101
Taille : 22,8 KoNom : Truncate.PNG
Affichages : 970
Taille : 14,2 Ko
    3 : ensuite je dois insérer chaque ligne de la Vue dans ma table qui a été vidée, je pensais pour cela utiliser les composants suivants le tDBOutput de ma table qui a été vidée, reliée à un tMap relié à ma Vue et en sortie l'insertion dans ma table.

    J'ai un soucis pour la partie 2, Exception in component tDBOutput_1 (Copy_of_ODS_TEMPF_PROGRAMMES_TRUNCATE)
    java.lang.RuntimeException: For delete, the schema must have a key
    , j'ai dois donc surement avoir un problème avec les paramètres de mon tDBOutput.

    J'ai créé dans un premier temps un JOB (comme joint en image) qui est censé seulement tronquer ma table car c'est pour le moment je butte seulement sur cette partie.

    Merci d'avance pour toute aide qui sera la bienvenue !

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 34
    Points : 48
    Points
    48
    Par défaut
    Bonjour,

    Je vais donner mon point de vue point par point :

    1) Essaie de regarder du coté des variables globales ou bien du coté de la fonction Numeric.sequence()

    2) ODS_TEMPF_PROGRAMMES_TRUNCATE , selon le message d'erreur, tu utilises cette table ci, existe-elle ?

    3) Si j'ai bien compris, tu veux récupérer tes données dans une table, les tronquer, puis les reinjecter dans cette même table. Est ce que c'est ça ?

    Si oui, je ne sais pas si tu peux mener l'action sur la table "Vider la table" puis faire un UPDATE, tu veux mettre à jour des données que tu supprimes avant, c'est un peu bizarre. Si je devais faire ça, je passerai par un Buffer en job Talend, puis je supprime les données dans la table, puis j'injecte, en virant l'autocommit lors de la suppression et puis je fais mon commit qu'à la fin de toutes les injections.

  3. #3
    Membre actif
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2019
    Messages : 134
    Points : 209
    Points
    209
    Par défaut
    C'était juste une basique erreur de SQL comme écrit dans mon erreur : j'ai écrit " server_myTable " au lieu de " server.myTabe " …

    Je clos le sujet.

  4. #4
    Membre actif
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2019
    Messages : 134
    Points : 209
    Points
    209
    Par défaut
    Citation Envoyé par fulcho Voir le message
    Bonjour,

    Je vais donner mon point de vue point par point :

    1) Essaie de regarder du coté des variables globales ou bien du coté de la fonction Numeric.sequence()

    2) ODS_TEMPF_PROGRAMMES_TRUNCATE , selon le message d'erreur, tu utilises cette table ci, existe-elle ?

    3) Si j'ai bien compris, tu veux récupérer tes données dans une table, les tronquer, puis les reinjecter dans cette même table. Est ce que c'est ça ?

    Si oui, je ne sais pas si tu peux mener l'action sur la table "Vider la table" puis faire un UPDATE, tu veux mettre à jour des données que tu supprimes avant, c'est un peu bizarre. Si je devais faire ça, je passerai par un Buffer en job Talend, puis je supprime les données dans la table, puis j'injecte, en virant l'autocommit lors de la suppression et puis je fais mon commit qu'à la fin de toutes les injections.

    En faite c'est un Job déjà existant sur Genio que je doit transférer sous Talend. Je dois refaire le Job comme il est, donc récupérer l'ID_max -> vider la table -> insérer dans la table les données issues d'une vue.

    L'erreur venait juste (comme souvent d'une erreur de syntaxe/chemin) d'un . que j'aurai du mettre au lieu d'un _ …

    Peut-être tu peux me donner un conseil sur quel composant utiliser pour faire mon TRUNCATE, sachant qu'en faite je dois utiliser une procédure stocker afin de vider ma table (pour une question de droit).

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 34
    Points : 48
    Points
    48
    Par défaut
    Je ne sais pas ce que tu veux faire exactement, mais tu as une Action sur la table "tronquer la table", ça peut peut-être t'aider ?

  6. #6
    Membre actif
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2019
    Messages : 134
    Points : 209
    Points
    209
    Par défaut Truncate via Procedure Stockée
    Citation Envoyé par fulcho Voir le message
    Je ne sais pas ce que tu veux faire exactement, mais tu as une Action sur la table "tronquer la table", ça peut peut-être t'aider ?
    Non justement je n'ai pas les droits d'effectuer un TRUNCATE, je suis obligé de passé par un autre table "SYS" qui possède elle des procédures et notamment la procédure pour effectuer un TRUNCATE. Je pense que je vais utiliser un tOracleSP mais il y a peu de doc et d'exemple sur son fonctionnement. Je ne vois pas ou je dois mettre le nom de mon paramètre.
    Les paramètre de mon TDBSP ressemble à ça :
    Nom : ProcedureStockee.PNG
Affichages : 976
Taille : 13,8 Ko

    Nom : ProcedureStockeeParametre.PNG
Affichages : 954
Taille : 11,7 Ko

    Mais j'obtiens l'erreur :

    Exception in component tDBSP_1 (ODS_TEMPF_PROGRAMMES_TRUNCATE)
    java.sql.SQLException: ORA-06550: Ligne 1, colonne 7 :
    PLS-00201: l'identificateur 'TABLE_NAME' doit être déclaré
    ORA-06550: Ligne 1, colonne 7 :
    PL/SQL: Statement ignored



    Sachant que l'identificateur table_name est censé être mon paramètre dans la procédure.

  7. #7
    Membre actif
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2019
    Messages : 134
    Points : 209
    Points
    209
    Par défaut
    Alors j'ai finis par trouver la bonne méthode est :
    Nom : ProcedureStockeeDesigner.PNG
Affichages : 951
Taille : 10,2 Ko
    Nom : ProcedureStockee.PNG
Affichages : 985
Taille : 14,4 Ko
    Nom : ProcedureStockeeParametre.PNG
Affichages : 956
Taille : 10,1 Ko

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

Discussions similaires

  1. Convertir des données specifiques d'une vue en PDF?
    Par mymemorial dans le forum Zend
    Réponses: 0
    Dernier message: 12/05/2013, 17h59
  2. [WD-2003] Insérer sur un signet des données issues d'un champ de formulaire
    Par mca61 dans le forum VBA Word
    Réponses: 2
    Dernier message: 01/03/2011, 12h29
  3. Trier des données issues d'une formule
    Par jarault dans le forum Excel
    Réponses: 5
    Dernier message: 09/04/2008, 21h53
  4. [FPDF] Mettre des données issues d'une requête dans l'entête
    Par zoom61 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 30/03/2007, 10h10
  5. [MySQL] Remplir un array() avec des données issues d'une bdd
    Par fichtre! dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 18/12/2006, 17h03

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