如何将带有中文字符的CSV UTF-8文件导入MySQL?

如何将带有中文字符的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

我已经尝试将以下带有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 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
    。这不必与加载的
    匹配
一般来说,MySQL用户应该始终以
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')

这成功了!非常感谢你。考虑到这是我的第一篇堆栈溢出帖子,我非常激动。