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

SQL Procédural MySQL Discussion :

Vérification non existence enregistrement


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 54
    Par défaut Vérification non existence enregistrement
    Bonjour à tous,

    Je poste dans cette section car je me doute que mon probléme fait intervenir une procédure stockée mais je peux bien me tromper aussi.

    Le process:
    - Je charge mensuellement des données depuis Excel dans une table MySQL via l'ETL TALEND.
    - La table MySQL contient des données relatives à des projets
    - Cette table est identifiée par une clé primaire (définie en auto increment dans MySQL)
    - Un projet est identifié par un code projet et on peut avoir plusieurs lignes avec le même code projet mais pour des mois différents.


    Une régle de gestion stipule que mon fichier source DOIT contenir toujours TOUS les projets déjà existants dans la table MySQL(càd que le fichier cumule tous les projets).
    Exemple:
    Fichier janvier:
    ID || code projet
    1 || P1
    2 || P2
    3 || P3

    table MySQL correspondante
    ID || code projet
    1 || P1
    2 || P2
    3 || P3

    Fichier Février:
    ID || code projet
    1 || P1
    2 || P2
    3 || P3
    4 || P4
    5 || P5


    table MySQL correspondante
    ID || code projet
    1 || P1
    2 || P2
    3 || P3
    4 || P4
    5 || P5


    NB: Nous voyons bien que P1, P2 et P3 existent également en février.



    Cependant des erreurs de saisie de la part des utilisateurs font qu'il arrive qu'un projet existant dans la base, ne se retrouve plus dans le fichier excel du mois suivant à charger.

    Exemple:

    Fichier janvier:
    ID || code projet
    1 || P1
    2 || P2
    3 || P3

    table MySQL correspondante
    ID || code projet
    1 || P1
    2 || P2
    3 || P3

    Fichier Février:
    ID || code projet
    1 || P1
    2 || P2
    4 || P4
    5 || P5


    table MySQL correspondante
    ID || code projet
    1 || P1
    2 || P2
    3 || P3
    4 || P4
    5 || P5

    NB: Nous voyons bien que P3 n'existe pas dans le fichier source mais existe
    dans la base en février.

    OBJECTIF:
    Mon problème est de gérer ces erreurs lors du chargement mensuel des fichiers Excel: si un projet qui EXISTE déjà dans ma base ne figure pas dans le nouveau chargement, alors le code projet correspondant doit aller dans une table d'erreur(cela permettra d'alerter l'utilisateur et de charger la ligne correspondante à ce projet ).

    Dans l'exemple ci-dessous cela revient à insérer P3 dans une table d'erreur.

    J'espere que vous comprenez mon probléme mais je suis à votre disposition pour toute question supplémentaire

    Je vous remercie d'avance

  2. #2
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    une piste:
    tu crée une table temporaire où tu charges ton mois, `insertion`
    appelons ta table en bd `fichier` et `erreur`

    quels sont les projets disparus:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select `code projet`
    from `fichier`
    where `code projet` not in
    	(select `code projet`
    	from `insertion`)
    insérer les fichiers disparus dans `erreur`:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    insert into `erreur`(`code projet`)
    select `code projet`
    from `fichier`
    where `code projet` not in
    	(select `code projet`
    	from `insertion`)

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 54
    Par défaut
    Merci eric, c'est une trés bonne idée!

    Seulement, a ton avis comment implémenter ce code au chargement ?
    A l'insertion , il faudra faire un test je pense (IF)...?
    Cela veut t'il dire qu'il me faut une procédure et un trigger vue que le test doit se faire à l'insertion dans la table "code projet" ?

    si c'est le cas, pourrait tu m'indiquer le code à écrire ?

    Merci d'avance

  4. #4
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    tu te fais une procédure stockée qui encadre tout ça...
    • load infile dans la table temporaire
    • insertion des erreurs
    • autres traitements éventuels
    • insertion de la table temporaire ou mise à jour dans le fichier
    • drop de la table temporaire


    ce principe d'insertion ne nécessite pas de test vu que tu n’insères que si une entrée est trouvée

    fais toi des table test, un petit jeu d'essai et essaye d'écrire la procédure pour faire ça

Discussions similaires

  1. Ajouter un enregistrement avec vérification d'existence !
    Par darkaminoo dans le forum Silverlight
    Réponses: 7
    Dernier message: 19/04/2011, 16h22
  2. Réponses: 18
    Dernier message: 26/02/2006, 23h07
  3. Réponses: 6
    Dernier message: 10/02/2006, 13h46
  4. Réponses: 9
    Dernier message: 17/03/2005, 09h20
  5. [VB.NET] Vérification d'existance d'une table
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/05/2004, 10h17

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