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 :

LOAD DATA UTF8


Sujet :

SQL Procédural MySQL

  1. #1
    Membre éclairé Avatar de pop_up
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 877
    Points : 786
    Points
    786
    Par défaut LOAD DATA UTF8
    Bonjour,

    Je cherche à charger une base a partir de fichiers csv.

    Le truc c'est que je veux une base en utf8

    Je commence par creer ma base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    create database toto DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    je cree ensuite une table puis ensuite je cherche a faire un LOAD DATA INFILE.

    Si je fait un load data du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    LOAD DATA INFILE '/home/.....' 
      REPLACE INTO TABLE TEST 
      FIELDS TERMINATED BY ';' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES
      (col1,col2...);
    .. le chargement de fait mais les champs contenants des accents sont tronqués. par exemple un champ contenant la chaine "spécialité" dans mon fichier csv sera egal à "sp"

    J'ai alors essayer de faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    LOAD DATA INFILE '/home/.....' 
      REPLACE INTO TABLE TESTCHARACTER SET "utf8"
      FIELDS TERMINATED BY ';' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES
      (col1,col2...);
    avec ou sans les guillemets autour de utf8, il y a une erreur de syntaxe.

    Est ce que quelqu'un pourrait m'aider a charger des tablkes correctement en utf8 ou me rediriger vers un lien qui decrive la demarcxhe a suivre ?

    je suis sur un serveur unix. J'ai meme essayé de convertir mes fichiers csv en utf8 avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    iconv -f iso8859-1 -t utf8 fichier.csv
    mais rien a faire


    help needed thanks

  2. #2
    Membre éclairé Avatar de pop_up
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 877
    Points : 786
    Points
    786
    Par défaut
    c'est bon j'ai trouvé la demarche a suivre, j'etait pas loin.

    Pour ceux que ça peut interesser voici les etapes a suivre :
    1. creer la base en specifiant le charset et l'encodage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CREATE DATABASE base DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    2. creer les objets normalement. les champs seront automatiquement en utf8

    3. Convertir les fichiers csv en utf8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    iconv -f ISO-8859-1 -t UTF-8 fichier.csv > fichier.csv.utf8
    4. faire un LOAD DATA INFILE classique avec le fichier csv.utf8


    voila

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 127
    Points : 111
    Points
    111
    Par défaut
    Bonjour !

    J'ai cru que ce fil allait me sauver, mais j'ai suivi ta démarche (la dernière postée) et ça ne marche pas chez moi.

    Pour mon cas précis : Je dispose d'un fichier .csv qui a été exporté avec une fonction de phpmyadmin (au format compressé .gz je crois, mais la décompression s'est passée sans problème). Quand je lis ce fichier (par exemple avec "more monfichier.csv", je vois bien les accents et les cédilles sur la console.

    Je fais la commande :
    LOAD DATA INFILE monfichier.csv INTO TABLE MATABLE FIELDS [etc...] lines terminated by '\n'

    Résultat : 20244 lignes affectées, 42936 warnings.


    Si je converti le fichier avec iconv -f, ça ne marche pas.


    Même résultats que ma table et ses champs textes soient au format "utf_general_ci", ou latin1


    Quelqu'un peut m'aider ?

    (edit : le schéma d'origine est au format "latin1", définit dans les création des tables)
    Michaël, développeur 2.0 et demi,
    http://www.bacchanales-prod.fr

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut load data et utf8
    J'ai découvert que la base de données DEFAULT CHARACTER SET est la seule chose qui compte en ce qui concerne ce bug.

    Si vous avez des tables UTF-8 mais que vous avez un DEFAULT CHARACTER SET utf8 pour la base de données, vous rencontrerez les problèmes.

    Toutefois, si vous avez la table UTF-8, mais la base de données latin1 par défaut, alors il fonctionnera.
    LOAD DATA local INFILE into table TABLE character set latin1 etc...

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

Discussions similaires

  1. LOAD DATA & Unicode
    Par Thomy Lobo dans le forum Requêtes
    Réponses: 8
    Dernier message: 25/07/2004, 18h41
  2. probleme avec "LOAD DATA INFILE" et les b
    Par Koo dans le forum Requêtes
    Réponses: 2
    Dernier message: 01/07/2004, 10h37
  3. Problème avec LOAD DATA INFILE
    Par ka0z dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 04/06/2004, 15h59
  4. petit soucis lors d'un LOAD DATA INFILE
    Par Jovial dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 04/06/2004, 12h58
  5. insertion des blob avec LOAD DATA...
    Par orli1x51 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 27/10/2003, 19h05

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