我已经尝试过将以下使用UTF-8编码的CSV文件导入到MySQL中,但是没有正确填充中文字符。我还将collate列更改为utf8-default collation和big5-big5-u chinese-ci,但是数据仍然没有填充正确的字符。
我要导入的数据:
Data I'm trying to import into MySQL
用于导入数据的SQL查询:
LOAD DATA LOCAL INFILE 'C:\\Users\\Ulises.Sotomoyor\\Downloads\\Insights.csv'
INTO TABLE unpaid_media.insights
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(@Date, Section, Language, Insights)
SET Date = str_to_date(@Date, '%m/%d/%Y')
MySQL表设置/排序:
MySQL Table Setting/Collation
最佳答案
您需要指定(至少)两件事:
输入数据的字符编码。--通过在CHARACTER SET utf8mb4
语句中添加big5
(或LOAD DATA
)来显式地执行此操作。
列的CHARACTER SET
可以是big5
或utf8mb4
。这不必与LOAD
匹配。
一般来说,MySQL用户应该始终以utf8mb4
为目标,但是big5
是可以的。
除非有唯一性约束,否则插入时排序规则无关紧要。(看来你没有。)
如果您说数据有一个编码(如big5),但列的编码不同(如utf8mb4),MySQL将在您插入时进行转换。
你可能会有其他的麻烦。参见http://stackoverflow.com/questions/38363566/trouble-with-utf8-characters-what-i-see-is-not-what-i-stored中的“最佳实践”。它针对的是utf8,但可以修改为导入big5和/或显示在big5中。
如果遇到更多问题,请尝试获取有关字符串/列的十六进制。