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

Requêtes MySQL Discussion :

Insertion dans une table à partir d'un fichier texte


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 63
    Points : 70
    Points
    70
    Par défaut Insertion dans une table à partir d'un fichier texte
    Bonjour,

    J'ai utilisé EasyPHP et PhpMyAdmin pour créer ma base, et je veux remplir une de mes tables à partir d'un fichier texte.
    Ce fichier étant assez conséquent, je remplis ma table en passant par une console en me connectant à mysql, puis en exécutant un script SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    > cd "c:\Program Files\EasyPHP1-8\mysql\bin"
    > mysql --user==root -D mabase
    > \. y:\tables\insert.txt
    Contenu de mon fichier insert.txt (script SQL) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    LOAD DATA INFILE 'chemin de mon fichier contenant les données' REPLACE INTO TABLE `nom de ma table à remplir` 
    FIELDS TERMINATED BY ';' 
    ENCLOSED BY '"' 
    ESCAPED BY '\\' 
    LINES TERMINATED BY '\r\n'
    Forme du contenu de mon fichier de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "211471";"ANC_DES_1";"CONNECTEUR TYPE K FICHE FEM 10 CONT SOUDE";
    "211471";"ANC_DES_2";"PAS= 4.0MM TROPICALISE SERIE KCA";
    "211471";"UNITE_MESURE";"UN";
    Mon fichier contient 396298 lignes de ce type, et après exécution dans la console, seules 395665 figurent dans PhpMyAdmin.

    Voila le résultat de l'exécution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Query OK, 792596 rows affected, 2 warnings (31.77sec)
    Enregistrements: 396298 Effaces: 0 Non traites: 0 Avertissements: 2
    Pourquoi certaines lignes ne sont pas insérées ? Comment voir le message d'avertissement ?

    Merci de votre aide.

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Bonjour,

    Vu que tu utilises le mot clef REPLACE, je dirais (comme ça à première vue) que ton fichier d'entrée contient plusieurs lignes avec des clefs identiques. Et que les dernières remplacent alors les premières au cours de traitement.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 63
    Points : 70
    Points
    70
    Par défaut
    merci de ta réponse.
    c'est aussi ce que je me suis dit, mais je n'ai apparemment aucun doublons entre mes lignes. comment le vérifier pour être sûr ?
    j'ai aussi vérifié que ce ne soit pas un problème de longueur, mais mes dernières lignes de mon fichier sont bien les derniers enregistrements de ma table.
    le problème peut-il venir d'ailleurs ?

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Non, le rapport t'indique bien qu'il a traité toutes les lignes...
    Pour vérifier, tu peux tenter d'importer tout le fichier dans une table temporaire, sur laquelle tu ne fais pas de REPLACE et qui n'a pas de clefs primaire.
    Puis tu fais un SELECT DISTINCT... sur ta clef primaire et tu vois le nombre de lignes que ça renvoit (pour voir si c'est cohérent avec ce que tu retrouves au final dans PHPMyAdmin).

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 63
    Points : 70
    Points
    70
    Par défaut
    héhé bien vu
    dans ma table temporaire sans clef, j'ai bien toutes mes lignes, et lorsque je fais un select distinct, il me ressort bien le nombre de lignes de ma table pricipale !
    je vais donc rajouter un champ à ma clef.

    merci beaucoup

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

Discussions similaires

  1. Insertion dans une table à partir d'une Vue
    Par BenMarcel dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/10/2007, 20h42
  2. Réponses: 2
    Dernier message: 05/10/2007, 23h49
  3. Réponses: 4
    Dernier message: 27/04/2007, 14h05
  4. Réponses: 2
    Dernier message: 08/06/2006, 00h10
  5. Réponses: 4
    Dernier message: 03/06/2006, 12h45

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