web-dev-qa-db-fra.com

Chargement de texte encodé en utf-8 dans la table MySQL

J'ai un gros fichier CSV que je vais le charger dans une table MySQL. Cependant, ces données sont codées au format utf-8, car elles incluent certains caractères non anglais. J'ai déjà défini le jeu de caractères de la colonne correspondante dans le tableau sur utf-8. Mais quand je charge mon fichier. les caractères non anglais se transforment en caractères étranges (lorsque je fais une sélection sur mes lignes de tableau). Dois-je encoder mes données avant de les charger dans la table? si oui, comment puis-je faire cela. J'utilise Python pour charger les données et utiliser la commande LOAD DATA LOCAL INFILE. Merci

26
Hossein

comme indiqué dans http://dev.mysql.com/doc/refman/5.1/en/load-data.html , vous pouvez spécifier le jeu de caractères utilisé par votre fichier CSV avec le "CHARACTER SET" paramètre facultatif de LOAD DATA LOCAL INFILE

16
dweeves

Essayer

LOAD DATA INFILE 'file'
IGNORE INTO TABLE table
CHARACTER SET UTF8
FIELDS TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
85
JMHeap

Vous devez envoyer

init_command = 'SET NAMES UTF8'
use_unicode = True
charset = 'utf8'

lors de l'exécution de MySQLdb.connect (), par ex.

dbconfig = {}
dbconfig['Host']            = 'localhost'
dbconfig['user']            = ''
dbconfig['passwd']          = ''
dbconfig['db']              = ''
dbconfig['init_command']    = 'SET NAMES UTF8'
dbconfig['use_unicode']     = True
dbconfig['charset']         = 'utf8'

conn = MySQLdb.connect(**dbconfig)

edit: ah, désolé, je vois que vous avez ajouté que vous utilisez "LOAD DATA LOCAL INFILE" - ce n'était pas clair à partir de votre question initiale :)

2
simon

Vous n'avez pas besoin d'encoder vos caractères dans le fichier, mais vous devez vous assurer que votre fichier est encodé en UTF-8 avant de charger ce fichier dans la base de données.

2
BuiXuanThanh

Essayez quelque chose comme,

CHARGEZ LES DONNÉES LOCALES INFILE "fichier" DANS LA TABLE message_history CHARACTER SET UTF8 COLUMNS TERMINATED BY '|' FACULTATIVEMENT CLÔTURÉ PAR '"' ÉCHAPPÉ PAR '"';

Structure d'origine,

https://dev.mysql.com/doc/refman/8.0/en/load-data.html

0
Hasitha Nanayakkara