mysql, fichier csv et accents

Nouveau WRInaute
Bonjour,

Petit problème sur lequel je sèche après l'avoir trituré dans tous les sens, à propos de la conservation des caractères accentués lors de l'enregistrement d'un fichier csv en vue de son exportation dans mysql.

Le problème:
- j'utilise phpmyadmin (2.6.1) en local pour tests avant upload sur mon serveur
- mes données sont dans des bases excel (.xls)
- je convertis les fichiers .xls en fichiers .csv, au moyen de la commande de excel "enregistrer sous... csv)
- puis j'importe à partir de l'interface phpmyadmin (importer à partir d'un fichier texte)
- aucun problème pour l'import (sauf des lignes vides que je dois supprimer manuellement une fois la table de mysql mise à jour)

- seulement voilà, lors de la conversion xls => csv, tous les caractères accentués sont supprimés (é, è, à, ö, etc...) et les mots qui comprennent ces caractères sont coupés nets lors de la conversion :(

Quelqu'un aurait-il une astuce pour permettre une conversion intégrale de .xls vers .csv qui respecte les caractères accentués? :?:

Merci à vous,
cordialement
 
WRInaute occasionnel
Bonjour, pour traiter des fichiers autres que Mysql il faut utiliser un script php qui fasse une boucle sur les enregistrements. Généralement, un simple stripslashes suffit a regler le probleme. voir le manuel php pour le traitement des textes en html.
 
Nouveau WRInaute
merci kaliii,

mais je trouvais bien simple la fonction d'importation et d'exportation de phpmyadmin, tant pour les tables .sql que pour les fichiers .csv.

En fait j'ai résolu le problème (en local du moins), en configurant l'encodage à latin1_general_ci et en faisant très attention lors de la conversion faite par excel du fichier .xls au fichier .csv.
Et ça fonctionne correctement.

maintenant, j'ai un nouveau problème, toujours d'importation, mais cette fois-ci lorsque je veux importer une table .sql ou un fichier .csv à partir du phpmyadmin du serveur distant.

En local, je travaille avec easyphp 1.8 (phpmyadmin 2.6.1 et mysql 4.1.9). Sur le serveur distant de mon site, il y a : phpmyadmin 2.7.0-pl2 et mysql 4.1.20.
En local donc, plus aucun problème pour importer une base sql ou un fichier csv.

Mais si je tente d'importer la même base avec le phpmyadmin du serveur, le message d'erreur "impossible de lire le fichier" m'est renvoyé. Idem pour un fichier csv.

sur le serveur distant, l'encodage de mysql est utf-8. j'ai bien essayé d'aligner l'encodage avec mon mysql local, mais rien n'y fait. Refus d'importation.

Merci de m'apporter vos lumières de pratiquants avertis des SGDB, pour réussir cette satanée importation! :wink:

cordialement
 
WRInaute passionné
lol

bah déjà faudrait utiliser le même encodage sur les serveurs mysql

ensuite tu peux aller le client mysql chez mysql.com

si tu as un acces ssh sur le server distant tu peux aussi copier la base dans /var/lib/mysql
mais pour moi la solution la plus robuste c'est de passer en local par acces et injecter tes tables par liaison odbc

rog
 
WRInaute occasionnel
Autrement, si tu as acces a SSH, la fonction cat fichier.sql | mysqld login pass est bien utile aussi. faut chercher sur le net la synthaxe exacte
 
Nouveau WRInaute
bonjour,
merci rog
- j'avais utilisé le même encodage, mais sans résultats
- la liaison odbc est séduisante, mais j'ai déjà passé 2 jours sur ce satané problème, or cette liaison me paraît assez sophistiquée à établir, et tant qu'on configure... on ne produit rien!

- finalement,
=> je prends mes précautions lors de la conversion .xls ==>.csv,
=> j'aligne l'encodage en utf8_general_ci en local et sur le serveur distant
=> je contourne le module d'importation sql en saisissant (copiant/collant) la requête directement dans mysql sur le serveur distant
... et ça marche :!:
Et pour les gros fichiers, le plus simple est d'utiliser la commande LOAD DATA INFILE de mysql

Simple, mais une fois qu'on sait le faire :!:

merci à vous
 
Discussions similaires
Haut