2010-05-04 7 views
3

Nous sommes souvent confrontés à la nécessité d'envoyer un fichier de données à l'un de nos clients avec les données de la base de données dont il a besoin de traduire. La plupart du temps, cette exportation est CSV ou XLS. La plupart du temps, nous créons un vidage csv avec phpmyadmin et obtenons un fichier xls en retour avec les données traduites. Le problème est que la plupart du temps les données sont UTF8 et quand le fichier est renvoyé en tant que xls chaque fois que nous chargeons les données dans mysql, nous finissons avec des problèmes utf8, les caractères ne sont pas affichés correctement, etc ...exporter et importer des données utf8 dans mysql: bonnes pratiques

Nous avons déjà doublechecked tout dans mysql de my.conf aux jeux de caractères de colonne et tout est réglé correctement à UTF8.

Ma question est pas comment résoudre le problème d'encodage depuis que cela a été résolu mais comment nous ferions mieux à l'avenir de gérer cette situation? Quel format d'exportation devrions-nous remettre? Comment devrions-nous importer (juste charger mysql infile de données ou nos propres scripts de traitement). Quel est le consensus général sur la façon de gérer cette situation?

Nous aimerions continuer à utiliser Excel si possible puisque c'est le format que presque tout le monde attend, y compris les agences de traduction de nos clients. La facilité d'utilisation de nos clients est le facteur le plus important ici, sans nous surcharger de problèmes majeurs à chaque fois. Le meilleur des deux mondes :)

Répondre

1

L'application sur laquelle je travaille actuellement inclut également la fonctionnalité d'importation de données. Les données sont principalement codées en utf-8. Mon approche consiste à pré-traiter le fichier CSV importé (ou délimité par des tabulations) dans n'importe quel fichier CSV temporaire encodé en utf-8 dans le script client (Python) et charger le contenu du fichier en utilisant l'instruction LOAD DATA INFILE.

L'encodage du fichier est controlée par character_set_database variable (la variable doit être définie au niveau du serveur) du système et à partir de MySQL 5.1.17 peut être remplacée par la jeu de caractères clause du INFILE LOAD DATA. La seule chose à savoir est que MySQL stocke jusqu'à 3 octets pour chaque caractère au lieu de 4 (ce qui peut poser un problème pour les langues orientées).

Pour exporter beaucoup de données efficacement, vous pouvez utiliser SELECT ... INTO OUTFILE déclaration.

+0

Donc, vous savez réellement comment et quel format et encodage vous recevrez lorsque le client renvoie le vidage? Ce n'est malheureusement pas le cas :( – ChrisR

+0

@ChrisRamakers: quelle est alors la question? Voulez-vous une façon automatisée de comprendre l'encodage du fichier importé? – newtover