如何将带有中文字符的CSV UTF-8文件导入MySQL?
我已经尝试将以下带有UTF-8编码的CSV文件导入MySQL,但是没有正确填充汉字。我还将collate列更改为utf8-默认排序规则和big5-big5_chinese_ci,但数据仍然没有填充正确的字符 我试图导入的数据: 我用于导入数据的SQL查询:如何将带有中文字符的CSV UTF-8文件导入MySQL?,mysql,csv,utf-8,Mysql,Csv,Utf 8,我已经尝试将以下带有UTF-8编码的CSV文件导入MySQL,但是没有正确填充汉字。我还将collate列更改为utf8-默认排序规则和big5-big5_chinese_ci,但数据仍然没有填充正确的字符 我试图导入的数据: 我用于导入数据的SQL查询: LOAD DATA LOCAL INFILE 'C:\\Users\\Ulises.Sotomoyor\\Downloads\\Insights.csv' INTO TABLE unpaid_media.insights FIELDS T
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表设置/排序:
您需要指定(至少)两件事:
- 输入数据的字符编码。-通过在
语句中添加LOAD DATA
(或字符集utf8mb4
)来明确执行此操作big5
- 列的
——它可以是字符集
或big5
。这不必与加载的utf8mb4
匹配
utf8mb4
为目标,但是big5
是可以的
除非具有唯一性约束,否则插入时排序规则并不重要。(你似乎没有这种能力。)
如果您说数据有一种编码(例如,big5),但列采用不同的编码(例如,utf8mb4),MySQL将在插入时进行转换
你可能会有其他的麻烦。请参阅中的“最佳实践”。它的目标是utf8,但可以修改为导入big5和/或在big5中显示
如果遇到更多问题,请尝试获取相关字符串/列的十六进制值。用于解决方案的查询:
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')
这成功了!非常感谢你。考虑到这是我的第一篇堆栈溢出帖子,我非常激动。