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

MySQL Discussion :

Problème d'importation fichier texte


Sujet :

MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Points : 39
    Points
    39
    Par défaut Problème d'importation fichier texte
    Bonjour
    Je souhaite importer un fichier texte vers une table et mon problème est que je n’arrive pas à bien définir les paramètres qui servent à identifier les champs.

    J’ai une table (new_table) qui va comme suit

    idnew_table : clé primaire non null auto incrémenté
    champ1,champ2,champ3,champ4 : varchar(45)

    le fichier texte à importé :
    element1;element2;element3;element4
    element1;element2;element3;element4
    element1;element2;element3;element4

    La requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    LOAD DATA LOCAL INFILE 'c:/Test3.txt'
     INTO TABLE new_table  
    FIELDS TERMINATED BY ';' 
    LINES TERMINATED BY '\R\N';

    Le résulta obtenu est que la première information inscrite dans le champ1 est element2
    et non element1.
    Dans le champ3 il y a element4 et element1
    Dans le champ4 il y a element2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    mysql> select * from new_table;
    +-------------+----------+----------+--------------------+----------+
    | idnew_table | champ1   | champ2   | champ3             | champ4   |
    +-------------+----------+----------+--------------------+----------+
    |         952 | element2 | element3 | element4
    element1 | element2 |
    En mode graphique il y a trois carrés entre element4 et element1.

    J’ai ajouté un point virgule a la fin de chaque ligne.
    Bien entendu en temps normal le point virgule ne serre que de séparateur.

    Ici l’element1 se retrouve dans le champ4

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    mysql> select * from new_table;
    +-------------+----------+----------+----------+------------
    | idnew_table | champ1   | champ2   | champ3   | champ4
    +-------------+----------+----------+----------+------------
    |         953 | element2 | element3 | element4 |
    element1 |
    +-------------+----------+----------+----------+------------

    En mode graphique dans le champ4 il y a toujours les 3 fameux petits carreaux puis element1.
    Je crois que l’element1 inscrit dans la table est celui de la deuxième ligne du fichier texte.
    Il n’y a aucun message d’erreur et les autres lignes du fichier texte ne sont pas importés.



    Vos suggestions et commentaires seront bien appréciés.

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Comme la première colonne est un identifiant auto-incrémenté, à la fin de l'instruction, il faut préciser la liste des colonnes à alimenter.

    Voir la doc MySQL :
    LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL]
    INFILE 'file_name.txt' [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [FIELDS [TERMINATED BY '\t'] [[OPTIONALLY] ENCLOSED BY ''] [ESCAPED BY '\\' ] ]
    [LINES [STARTING BY ''] [TERMINATED BY '\n'] ]
    [IGNORE number LINES]
    [(col_name,...)]

    Par exemple, pour charger un fichier de blagues, qui sont séparées par une ligne de %%, dans une table vous pouvez faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE blagues (    
      a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,     
      blague TEXT NOT NULL    ); 
     
    LOAD DATA INFILE "/tmp/blagues.txt" 
    INTO TABLE blagues 
    FIELDS TERMINATED BY "" 
    LINES TERMINATED BY "\n%%\n" 
    (blague);
    Ce qui donne dans votre exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    LOAD DATA LOCAL INFILE 'c:/Test3.txt'
    INTO TABLE new_table
    FILEDS TERMINATED BY ';'
    LINES TERMINATED BY '\R\N'
    (champ1, champ2, champ3, champ4)
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Points : 39
    Points
    39
    Par défaut
    Merci pour cette aide
    Lorsque j’ai lu votre suggestion je me suis rappelé avoir lu quel que chose a propos de la liste des champs.
    Vos explications étaient très claires et mon permis de résoudre mon problème.
    Dans ma requête j’utilise cette commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LINES TERMINATED BY '\r\n
    \r pour retour de chariot et \n pour nouvelle ligne.
    Une note dans la documentation expliquait que sous Windows les documents textes ont des caractères cachés.
    Dans votre exemple la syntaxe est différente.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LINES TERMINATED BY "\n%%\n"
    J’aimerais savoir si possible que représente "\n%%\n».

    Merci

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

Discussions similaires

  1. [MySQL-5.5] Problème d'import fichier texte dans phpmyadmin
    Par Mut dans le forum Administration
    Réponses: 1
    Dernier message: 17/05/2013, 18h16
  2. [XL-2003] Import fichier texte - problème avec séparateur milliers
    Par nmicoud dans le forum Excel
    Réponses: 4
    Dernier message: 15/04/2009, 13h48
  3. Réponses: 3
    Dernier message: 17/07/2008, 21h59
  4. problème pour importer fichier texte
    Par louffa dans le forum Outils
    Réponses: 2
    Dernier message: 30/01/2008, 14h31
  5. Problème Import fichier texte
    Par Fantomas13 dans le forum VBA Access
    Réponses: 3
    Dernier message: 16/01/2008, 23h08

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