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

  1. #1
    Membre habitué
    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:
    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
    Nouveau membre du Club
    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 habitué
    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 habitué
    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
    Nouveau membre du Club
    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 habitué
    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 :




    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 habitué
    Alors j'ai finis par trouver la bonne méthode est :