当前位置: 首页 > 知识库问答 >
问题:

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

裴意
2023-03-14

我想进口一台电脑。通过以下方式将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;

但我发现以下错误,我无法解释原因:

Error Code: 1300. Invalid utf8 character string: 'M'

有什么建议吗?

共有3个答案

杨乐意
2023-03-14

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

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

然后导入您的csv文件

程瑞
2023-03-14

查看导出的设置。寻找“UTF-8”。

这表明“截断文本”是由于数据未编码为utf8mb4造成的。在MySQL外部,“寻找”UTF-8“。(在内部,MySQL、utf8和utf8mb4对所有欧洲字符集都同样有效,因此u应该不是问题。

如果将其导出为“cp1252”(或许多编码中的任何一种),则u的字节对于utf8mb4无效,从而导致截断。

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

方案A:导出为UTF-8

方案B:导入为latin1。(无需更改列/表定义,只需加载数据

段干兴业
2023-03-14

我试过的其他方法对我都不起作用,包括确保我的。csv以UTF-8编码保存。

这起到了作用:

当使用LOAD DATA LOCAL INFILE时,将CHARACTER SET latin1设置为CHARACTER SET utf8mb4,如https://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;
 类似资料:
  • 我使用以下命令将数据从. csv文件导入到MySQL数据库表中,就像这样: 然而,由于源代码文件中的一列包含一个非常奇怪的数据,即:,程序拒绝将数据导入MySQL并继续抛出此错误: JAVAsql。SQLException:无效的utf8字符串:“viva Y31L。拉斯塔莫德 我对此进行了搜索,但无法真正理解错误到底是什么,除了字符串“viva Y31L.RastaMod¦ãu Version”

  • 问题内容: 将csv文件上传到mysql表的最佳/最快方法是什么?我想将第一行数据用作列名。 发现了这一点: 如何将CSV文件导入MySQL表 但是唯一的答案是使用GUI而不是Shell? 问题答案: 您无需编写脚本即可从CSV文件中提取信息,而是可以直接将MYSQL链接到该文件并使用以下SQL语法上传信息。 要将Excel文件导入MySQL,请先将其导出为CSV文件。从生成的CSV文件中删除CS

  • 问题内容: 我创建了一个数据库和一个表。我还创建了所有需要的字段。我创建了46个字段,其中一个是该行的ID。CSV不包含ID字段,也不包含列的标题。我对所有这些都是陌生的,但一直在努力解决。我不是在这里懒惰地寻求答案,而是在寻找方向。 我试图弄清楚如何导入CSV,但是让它开始从第二个字段开始导入数据,因为我希望auto_increment将填充ID字段,这是我创建的第一个字段。 我没有运气就尝试了

  • 我无法使用MySQL和phpMyAdmin进行基本的编码工作。我想在我的数据中使用简单的法语字符(如é和è)。如果运行UPDATE,则字符插入正确。但不是在我导入剧本的时候... 下面是我在phpMyAdmin上导入的脚本: 导入时出现的两个错误: 在phpMyAdmin上导入脚本时,唯一接近utf8mb4的选项是utf8 表和数据库也采用类似的编码 但是数据被剥离了... 我想做什么 将COLL

  • 当我导入包含一些国家/地区的CSV文件时,我遇到了一些字符的问题。它没有很好的编码然后我得到了?标记,而不是CSV文件中写入的字符。这里有一些国家让我面临这个问题:奥兰群岛、圣巴特勒米、科特迪瓦、库拉索岛。 下面是导入csv文件的代码: 首先我使用了FileReader,所有这些国家都出现了问题,然后我改为InputStreamReader并添加了这个UTF-8字符集,问题几乎解决了。当我使用字符

  • 我有一个导出CSV文件的PHP脚本。我的用户然后在Excel中编辑文件,保存它,并重新上传它。 如果他们在字段中键入欧元符号,则在上载文件时,欧元符号以及之后的所有内容都将丢失。我正在使用str_getcsv函数。 如果我尝试转换编码(比如UTF-8),欧元符号就会消失,我会得到一个缺少的字符标记(通常由一个空白的正方形或菱形中的问号表示)。 如何将编码转换为UTF-8,同时保留欧元符号(和其他非