Загрузка текста в кодировке utf-8 в таблицу MySQL - PullRequest
26 голосов
/ 10 февраля 2011

У меня есть большой CSV-файл, который я собираюсь загрузить в таблицу MySQL. Однако эти данные кодируются в формате utf-8, потому что они содержат некоторые неанглийские символы. Я уже установил набор символов соответствующего столбца в таблице в utf-8. Но когда я загружаю свой файл. неанглийские символы превращаются в странные символы (когда я делаю выбор в строках таблицы). Нужно ли мне кодировать мои данные перед загрузкой в ​​таблицу? Если да, как я могу это сделать. Я использую Python для загрузки данных и использую команду LOAD DATA LOCAL INFILE. спасибо

Ответы [ 5 ]

84 голосов
/ 18 января 2013

Попробуйте

LOAD DATA INFILE 'file'
IGNORE INTO TABLE table
CHARACTER SET UTF8
FIELDS TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
16 голосов
/ 10 февраля 2011

, как указано в http://dev.mysql.com/doc/refman/5.1/en/load-data.html,, вы можете указать кодировку, используемую вашим CSV-файлом, с помощью дополнительного параметра "CHARACTER SET" в LOAD DATA LOCAL INFILE

2 голосов
/ 08 июня 2014

Не нужно кодировать ваши символы в файле, но вы должны убедиться, что ваш файл кодируется в UTF-8, прежде чем загружать этот файл в базу данных.

2 голосов
/ 10 февраля 2011

Вы должны отправить

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

при выполнении MySQLdb.connect (), например,

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: ах, извините, я вижу, вы добавили, что используете "LOAD DATA LOCAL INFILE "- это не было ясно из вашего первоначального вопроса:)

0 голосов
/ 10 июля 2019

Попробуйте что-то вроде,

ЗАГРУЗИТЬ ЛОКАЛЬНЫЙ ИНФИЛЬ ДАННЫХ "file" INTO TABLE message_history CHARACTER SET UTF8 КОЛОННЫ, ПРЕКРАЩЕННЫЕ '|'ФАКУЛЬТАТИВНО ЗАКРЫТО '' 'ESCAPED BY' '';

Исходная структура,

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

...