如何将带有中文字符的 CSV UTF-8 文件导入 MySQL?
Posted
技术标签:
【中文标题】如何将带有中文字符的 CSV UTF-8 文件导入 MySQL?【英文标题】:How can I import CSV UTF-8 file with Chinese characters into MySQL? 【发布时间】:2017-11-10 19:19:28 【问题描述】:我已尝试将以下采用 UTF-8 编码的 CSV 文件导入 mysql,但无法正确填充中文字符。我还将列 collate 更改为 utf8 - default collation 和 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
【问题讨论】:
【参考方案1】:您需要指定(至少)两件事:
传入数据的字符编码。 -- 通过在LOAD DATA
语句中添加CHARACTER SET utf8mb4
(或big5
)来明确执行此操作。
列的CHARACTER SET
-- 它可以是big5
或utf8mb4
。这不必与LOAD
匹配。
一般来说,MySQL 用户应该始终以utf8mb4
为目标,但big5
也可以。
除非您有唯一性约束,否则插入时排序规则无关紧要。 (你好像没有。)
如果您说数据具有一种编码(例如 big5),但该列采用不同的编码(例如 utf8mb4),MySQL 将在您插入时进行转换。
您可能会遇到其他麻烦。请参阅 http://***.com/questions/38363566/trouble-with-utf8-characters-what-i-see-is-not-what-i-stored 中的“最佳实践”。它针对 utf8,但可以修改为导入 big5 和/或在 big5 中显示。
如果遇到更多麻烦,请尝试获取有问题的字符串/列的十六进制。
【讨论】:
这成功了!太感谢了。考虑到这是我的第一篇 Stack Overflow 帖子,我感到非常兴奋。【参考方案2】:用于解决方案的查询:
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')
【讨论】:
以上是关于如何将带有中文字符的 CSV UTF-8 文件导入 MySQL?的主要内容,如果未能解决你的问题,请参考以下文章
使用 UTF-8 编码,具有特殊属性/外来字符的 CSV 文件在导入 MySQL (phpMyAdmin) 时不保留