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

Modélisation Discussion :

Fichier CSV et table access: importation sur base la clef primaire ou requête doublon après l'imporation


Sujet :

Modélisation

  1. #1
    Membre du Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Mars 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Mars 2014
    Messages : 80
    Points : 61
    Points
    61
    Par défaut Fichier CSV et table access: importation sur base la clef primaire ou requête doublon après l'imporation
    Bonjour à tous,

    J'importe les données d'un fichier CSV vers ma table de données. Ce fichier CSV est relativement important (60 000 lignes) et se renouvelle régulièrement (48h). En effet, il sera renouvelé complètement après un cycle de 48h mais des données seront également ajoutées dans ce délai.

    Dans ma table access, j'ai indiqué une clef primaire qui correspond au n° de dossier et à la date qui se trouvent dans le fichier CSV.

    Le tout a été automatisé via une macro (Bouton à cliquer pour le déclenchement). Jusque là pas trop de problème, je devais juste confirmer la violation de la clef primaire si le transfert avait déjà été réalisé à un autre moment de la journée. Je trouvais cela relativement pratique sauf que je devais cliquer pour la confirmation.

    Maintenant, l'idée est de déclencher la macro par minuterie. J'ai réussi la manipulation mais il me reste le message de violation de la clef primaire à valider.
    Première question, est-il possible de le supprimer ?

    J'avais pensé à une autre solution pour éviter ce message. Elle consistait à importer les données et ensuite faire tourner une requête de doublon et de supprimer le double enregistrement. Vu la quantité de données (60 000) X 365 jours, Est-ce que cette requête ne va pas prendre un siècle avant de se réaliser quand on sera beaucoup plus loin dans l'année ?

    D'avance merci.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 345
    Points : 23 805
    Points
    23 805
    Par défaut
    Bonjour

    La méthode propre est la seconde avec une table temporaire et une importation différentielle.

    Pour tes volumes au total, en fin d'année prévois-tu d'avoir 365 * 60000 enregistrements ?

    Tu peux essayer une méthode plus "cochonne" qui consiste à neutraliser les messages d'alerte au moment de l'importation. Je ne l'ai pas testée. Cela pourrait ressembler à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      on error goto Err_Importion
     
      docmd.setwarning false 'Neutralise les messages d'alerte
      'ici ton importation
      docmd.setwarning true 'Ne pas oublier de réactiver les messages car ils ont été complétement neutralisés.
     
    Exit_Importation:
     exit sub
     
    Err_Importation:
      docmd.setwarning true
      msgbox "Erreur " & err.number & ", " & err.description
      resume Exit_Importation
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre du Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Mars 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Mars 2014
    Messages : 80
    Points : 61
    Points
    61
    Par défaut
    Bonjour Marot_R,

    J'ai essayé de couper l'avertissement et ça marche. Je pensais avoir déjà testé mais comme je travaille parfois de nuit, à mon avis je n'avais pas les yeux en face des trous...

    Pour ta question, j'aurai bien 60 000 * 365 et cela pourrait encore monter plus haut.

    Je pense donc que je vais devoir faire un mix des 2 techniques car j'ai fait un test sur la requête doublon et cela prend beaucoup de temps. J'ai un autre souci dans le sens ou si j'essaye de faire une requête de recherche sur le N° de dossier cela prend beaucoup de temps. Quand j'indexe le champ, je gagne en vitesse mais c'est alors l'importation de données qui se retrouve ralentie...sauf si tu as une autre idée, je pensais faire comme ceci:

    1 table Tempo basée sur la clef primaire et qui se vide après 48h dans ma table finale. Cette dernière est alors indexée sur le champs pour me permettre d'accélérer le traitement de recherche. j'aurai donc 2 formulaires de recherche. Un sur la table des 48H et l'autre sur l'historique...

    Bien à toi.

    Chris

Discussions similaires

  1. [Toutes versions] Import fichier csv dans table
    Par Anaxagore dans le forum VBA Access
    Réponses: 2
    Dernier message: 03/11/2010, 15h48
  2. Réponses: 10
    Dernier message: 06/08/2010, 23h01
  3. Réponses: 0
    Dernier message: 21/04/2008, 19h08
  4. Importation fichier Excel dans table Access
    Par kemasse dans le forum Access
    Réponses: 2
    Dernier message: 27/06/2006, 15h12
  5. Import de fichier CSV automatique dans Access
    Par Jmar dans le forum Access
    Réponses: 4
    Dernier message: 20/01/2006, 10h48

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