我尝试将以下带有UTF-8编码的CSV文件导入MySQL,但中文字符填写不正确。我还将列整理更改为utf8 - 默认排序规则和big5-big5_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
答案 0 :(得分:3)
您需要指定(至少)两件事:
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显示。
如果您遇到更多麻烦,请尝试获取相关字符串/列的十六进制。
答案 1 :(得分:1)
用于解决方案的查询:
LOAD DATA LOCAL INFILE 'C:\\Users\\Ulises.Sotomoyor\\Downloads\\Insights.csv'
INTO TABLE unpaid_media.insights
CHARACTER SET utf8mb4
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')