我有一个大的CSV文件,我将把它加载到MySQL表中。但是,这些数据被编码为utf-8格式,因为它们包含一些非英文字符。 我已经将表中相应列的字符集设置为utf-8。但是当我加载我的文件。非英语字符变成奇怪的字符(当我对表行进行选择时)。在加载到表中之前,是否需要对数据进行编码?如果是,我怎么能这样做。我使用Python加载数据并使用LOAD DATA LOCAL INFILE命令。 感谢
答案 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 列以'|'终止 可选用“”包围 以“”开头;
原始结构