将utf-8编码的文本加载到MySQL表中

时间:2011-02-10 13:51:55

标签: mysql utf-8 decode encode

我有一个大的CSV文件,我将把它加载到MySQL表中。但是,这些数据被编码为utf-8格式,因为它们包含一些非英文字符。 我已经将表中相应列的字符集设置为utf-8。但是当我加载我的文件。非英语字符变成奇怪的字符(当我对表行进行选择时)。在加载到表中之前,是否需要对数据进行编码?如果是,我怎么能这样做。我使用Python加载数据并使用LOAD DATA LOCAL INFILE命令。 感谢

5 个答案:

答案 0 :(得分:84)

尝试

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

答案 1 :(得分:16)

http://dev.mysql.com/doc/refman/5.1/en/load-data.html所述, 您可以使用LOAD DATA LOCAL INFILE的“CHARACTER SET”可选参数指定CSV文件使用的字符集

答案 2 :(得分:2)

不需要在文件中对字符进行编码,但在将此文件加载到数据库之前,需要确保文件以UTF-8编码。

答案 3 :(得分:1)

你应该发送

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

在做MySQLdb.connect()时 e.g。

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)

编辑:啊,对不起,我看到你已经补充说你正在使用“LOAD DATA LOCAL INFILE” - 从你最初的问题来看这不清楚:)

答案 4 :(得分:0)

尝试类似的东西

加载数据本地文件“文件” 进入表message_history 字符集UTF8 列以'|'终止 可选用“”包围 以“”开头;

原始结构

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