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 :

Problème d'import avec LOAD DATA INFILE


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut Problème d'import avec LOAD DATA INFILE
    Bonjour,

    j'essaie de mettre à jour une table avec un fichier .txt en lançant le requête SQL suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    LOAD DATA INFILE 'Classeur.txt' INTO TABLE my_blog 
    FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"' 
    LINES TERMINATED BY '\p'
    Il prend bien la 1ère ligne mais après ça part en vrille : toutes les autres entrées sont vides ou prennent la valeur par défaut…

    J'ai pourtant bien vu que les lignes se finissaient avec un \p

    Qu'est-ce qui pourrait provoquer ça ?

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    Le saut de paragraphe n'est pas \p mais \r.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Merci pour ta réponse malheureusement ce n'est pas encore gagné :

    avec \r
    je n'ai que le 1er élément qui est ajouté à la table (donc la 1ère ligne du fichier texte)

    avec \p
    j'ai plusieurs lignes mais seule la 1ère est cohérente. Les autres n'ont pas les bonnes valeurs. Les champs sont soit nuls, soit vides…



    Une autre idée ?

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    '\r\n' (classique Windows)

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Malheureusement toujours …

    ni '\r\n' ou '\n\r', ni '\p\n' ou \n\p' ne fonctionnent…
    (tant que j'y étais j'ai essayé ces autres combinaisons…)

    Le résultat est toujours une seule ligne…

    Si je fais un copier/coller du saut de ligne dans Word j'obtiens ^p
    ça revient donc bien \p non ?

    C'est peut-être dans mon export d'Excel que je n'ai pas choisi le bon format ?
    Je suis sur Mac.
    J'ai mis "Texte avec séparateur tabulation"…

  6. #6
    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 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 037
    Points : 23 784
    Points
    23 784
    Par défaut
    Et \n tout seul ?
    Sinon, édite le fichier avec un éditeur hexadécimal et regarde le code hexa des fins de lignes. Ca peut donner une indication...

    ced

  7. #7
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    Citation Envoyé par Mister Paul Voir le message
    Si je fais un copier/coller du saut de ligne dans Word j'obtiens ^p
    ça revient donc bien \p non ?
    Non. Il n'y a aucun rapport entre Word et MySQL.
    Le retour chariot (saut de paragraphe) est le caractère 13. Il est représenté dans Word par ¶ (à l'affichage) et ^p (dans une recherche), et dans MySQL par \r.
    Citation Envoyé par Mister Paul Voir le message
    C'est peut-être dans mon export d'Excel que je n'ai pas choisi le bon format ?
    Je suis sur Mac.
    Si c'est du Mac OS X, c'est du Unix, donc je rejoins ced, ça doit être '\n' (le saut de ligne simple, ou caractère 10). C'est quand même bizarre que ça te donne ^p dans Word...
    Citation Envoyé par Mister Paul Voir le message
    J'ai mis "Texte avec séparateur tabulation"…
    ça c'est le FIELDS TERMINATED BY '\t', mais ça ne dit rien sur le séparateur de lignes.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Ça ne fonctionne toujours pas…

    Avec un éditeur hexadécimal :
    saut de champ : 09
    saut de ligne : 0D

  9. #9
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    09 : caractère 9, donc tabulation, donc '\t', tout est OK là-dessus
    0D : caractère 13, donc '\r'

    Je pense que le problème vient des \r qui doivent être dans les valeurs... j'ai déjà constaté que les mettre entre guillemets ne suffisait pas.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Ben je n'ai pas vu de \r dans les valeurs.

    Par ailleurs si je fais une recherche avec Word dans le fichier txt :
    - ^p me donne toutes les fins de lignes
    - ^t me donne les tabulations entre les champs… MAIS je remarque des choses étranges :
    - une tabulation au lieu d'un espace entre 2 mots d'un même champ…
    - plus de 300 entrées dans la table au lieu de 30…

    Un gros problème d'encodage depuis l'export Excel ?

    Il y a une procédure plus sûre que de passer par Excel/Word ?
    (je suis sur Mac)

  11. #11
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    Citation Envoyé par Mister Paul Voir le message
    Ben je n'ai pas vu de \r dans les valeurs.

    Par ailleurs si je fais une recherche avec Word dans le fichier txt :
    - ^p me donne toutes les fins de lignes
    - ^t me donne les tabulations entre les champs… MAIS je remarque des choses étranges :
    - une tabulation au lieu d'un espace entre 2 mots d'un même champ…
    - plus de 300 entrées dans la table au lieu de 30…
    ça doit pas aider !
    Citation Envoyé par Mister Paul Voir le message

    Un gros problème d'encodage depuis l'export Excel ?

    Il y a une procédure plus sûre que de passer par Excel/Word ?
    (je suis sur Mac)
    D'où viennent tes données ?

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    D'où viennent tes données ?
    A la base j'ai fait un export en Microsoft Excel 2000 depuis ma table avec phpMyAdmin…

  13. #13
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    Alors fais plutôt ton export avec mysqldump. Passer par Word et Excel pour faire du MySQL vers MySQL, c'est assez tordu !

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Oui évidemment c'est tordu !

    Sauf qu'entre-temps je dois travailler sur le fichier Excel de manière bureautique pour le compléter…

    Sauf meilleure idée, je chercherais donc plutôt à sécuriser le processus via Excel/Word…

  15. #15
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    Peux-tu déjà zapper le passage par Word ?

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    J'ai refait le processus en remplaçant Word par BBedit :
    même problème !


    Mais je viens de remarquer que tous les p du texte sont considérés comme des fins de ligne
    J'avais mis : LINES TERMINATED BY '\p'

    Comme tu dis avec Word pour la fin de ligne c'est :
    0D : caractère 13, donc '\r'

    J'ai essayé :
    LINES TERMINATED BY '\r'
    LINES TERMINATED BY '\r\n'
    LINES TERMINATED BY '\n\r'
    mais je n'obtiens qu'une seule ligne saisie dans la table…
    C'est bien la fin de ligne qui pose problème.

    Avec BBEdit mes fins de lignes sont indiquées comme ça en hexadécimal :
    E2 80 A8

    Ouh la la…

  17. #17
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    Citation Envoyé par Mister Paul Voir le message
    J'ai refait le processus en remplaçant Word par BBedit :
    même problème !
    Pourquoi as-tu besoin de passer par un éditeur de texte ?
    Citation Envoyé par Mister Paul Voir le message
    Mais je viens de remarquer que tous les p du texte sont considérés comme des fins de ligne
    J'avais mis : LINES TERMINATED BY '\p'
    bah oui, comme '\p' ne correspond à aucun code, c'est comme si tu écrivais LINES TERMINATED BY 'p'.
    Citation Envoyé par Mister Paul Voir le message
    Avec BBEdit mes fins de lignes sont indiquées comme ça en hexadécimal :
    E2 80 A8
    Ouh la la…
    ça correspond à '
'... à tout hasard, essaie un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LINES TERMINATED BY '
'
    mais je doute beaucoup...

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    LINES TERMINATED BY '
'
    Effectivement ça ne marche pas…

    Ben sinon je passe par un éditeur de texte pour remplacer les "" par des \" (enfin j'ai lu qu'il fallait faire ça…).

    J'ai essayé d'exporter directement le xls en txt :
    ça marche assez bien MAIS :
    - dès qu'il y a un caractère accentué ça coupe les données du champ
    - les nombres, dates et heures ne passent pas…

    Euh il n'y a pas une procédure simple et fiable pour mettre à jour une table avec Excel ?

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Bon ce que j'ai fait finalement et qui fonctionne pour moi sur Mac avec le problème de caractères accentués :

    Export de la table :
    1° Export de la table en XLS 2000 depuis phpMyAdmin
    2° OK je peux travailler sur le fichier Excel qui se crée…

    (…)

    Import de la table :
    1° Enregistrer le fichier Excel sous csv
    2° Le réouvrir avec BBEdit en MacRoman puis le sauver en Unix utf-8 No Bom
    3° Importer avec phpMyAdmin en CSV via LOAD DATA et avec \n en caractère de fin de ligne

    J'ai mis le temps…

    Par contre je suis obligé de vider la table avant d'importer parce que même si "Remplacer les données de la table avec le fichier" est coché ça semble ne pas remplacer…

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

Discussions similaires

  1. problème avec load data infile
    Par organik19 dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 10/07/2008, 10h14
  2. [MySQL]Problème avec load data infile
    Par GLDavid dans le forum SGBD
    Réponses: 5
    Dernier message: 16/03/2007, 13h36
  3. Probléme avec load data infile
    Par Moez.B dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 31/08/2006, 10h01
  4. [MySQL] Problème avec LOAD DATA INFILE
    Par Pgs dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/07/2006, 15h33
  5. Problème avec LOAD DATA INFILE
    Par ka0z dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 04/06/2004, 14h59

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