MySQL导入csv表时无效的UTF8字符串

use*_*295 13 mysql csv utf-8 character-encoding import-csv

我想通过以下方式将.csv文件导入MySQL数据库:

load data local infile 'C:\\Users\\t_lichtenberger\\Desktop\\tblEnvironmentLog.csv'
into table tblenvironmentlog
character set utf8
fields terminated by ';'
lines terminated by '\n'
ignore 1 lines;
Run Code Online (Sandbox Code Playgroud)

.csv文件如下所示: 在此输入图像描述

但我收到以下错误,我无法解释原因:

Error Code: 1300. Invalid utf8 character string: 'M'
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Ric*_*mes 11

查看导出的设置.寻找"UTF-8".

表明"截断文本"是由未编码为utf8mb4的数据引起的.在MySQL之外,"寻找"UTF-8".(内部,MySQL,utf8和utf8mb4同样适用于所有欧洲字符集,所以这ü应该不是问题.

如果它被导出为"cp1252"(或任何一些编码),则字节for ü对utf8mb4无效,导致截断.

如果这种分析是正确的,有两种解决方案:

计划A:出口为UTF-8.

B计划:导入为latin1.(您无需更改列/表定义,只需更改LOAD DATA.)


Rya*_*yan 8

我尝试的其他任何东西都没有,包括确保我的.csv使用UTF-8编码保存.

这有效:

使用时LOAD DATA LOCAL INFILE,请设置CHARACTER SET latin1而不是CHARACTER SET utf8mb4https://dzone.com/articles/mysql-57-utf8mb4-and-the-load-data-infile中所示

这是一个适合我的完整示例:

TRUNCATE homestead_daily.answers;
SET FOREIGN_KEY_CHECKS = 0; 
TRUNCATE homestead_daily.questions;
SET FOREIGN_KEY_CHECKS = 1; 
LOAD DATA LOCAL INFILE 'C:/Users/me/Desktop/questions.csv' INTO TABLE homestead_daily.questions
CHARACTER SET latin1
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(type, question, created_at, updated_at);
SELECT * FROM homestead_daily.questions;
Run Code Online (Sandbox Code Playgroud)


Amm*_*var 5

只需在文本编辑器(如 Nodepad++)中打开 csv 文件

并将文件编码更改为UTF-8

然后导入你的csv文件