mysql插入csv数据报错 “incorrect string”

2024年07月19日 mysql插入csv数据报错 极客笔记

mysql插入csv数据报错 “incorrect string”

最近在进行一个项目中,我遇到了一个问题,就是在用MySQL导入CSV数据时出现了错误提示 “incorrect string”。经过我对这个问题进行了深入研究和解决,现在我来分享一下我的解决方案。

问题描述

在项目中,我需要将一个CSV文件中的数据导入到MySQL数据库中的一个表中。我先创建了一个相应的数据表,然后使用MySQL的LOAD DATA INFILE命令来从CSV文件中导入数据。但是在执行导入命令时,出现了一个报错提示:”incorrect string value”.

问题分析

这个错误提示表明,在导入数据时,MySQL遇到了包含不合法字符的字符串。这可能是因为CSV文件中的某些数据包含了MySQL不支持的字符,或者是字符编码不匹配等问题。

解决方案

针对这个问题,我采取了以下几个步骤来解决:

1. 检查CSV文件编码

首先,我检查了CSV文件的编码格式。在导入数据时,MySQL要求CSV文件的编码与数据库的编码一致,否则就会出现”incorrect string value”错误。我使用文本编辑器打开CSV文件,确认了其编码格式为UTF-8。

2. 检查表结构

接着,我检查了目标数据表的结构,确保表中的每个字段都与CSV文件中的数据对应。在创建表时,我使用了UTF-8字符集和utf8mb4字符编码,以确保支持各种字符。

CREATE TABLE my_table (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

3. 转换数据格式

在导入数据时,我发现CSV文件中包含了一些特殊字符,例如换行符、制表符等。这些特殊字符可能导致”incorrect string value”错误。我使用文本编辑器将这些特殊字符替换为普通字符。

4. 使用SET命令

为了处理导入数据时可能出现的字符编码问题,我使用了MySQL的SET命令来设置字符集和字符编码。

SET character_set_client = utf8mb4;
SET character_set_connection = utf8mb4;
SET character_set_results = utf8mb4;

5. 设置FIELDS TERMINATED BY参数

在使用LOAD DATA INFILE命令导入数据时,我指定了FIELDS TERMINATED BY参数,以确保正确解析CSV文件中的数据。

LOAD DATA INFILE 'path/to/file.csv'
INTO TABLE my_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

6. 执行导入命令

最后,我重新执行了导入命令,通过以上步骤的处理,成功将CSV文件中的数据导入到MySQL数据库中,没有再出现”incorrect string”错误。

结论

通过以上解决方法,我成功解决了在MySQL导入CSV数据时出现的”incorrect string”错误。在处理类似问题时,需要仔细检查CSV文件的编码格式、数据内容和目标表结构,确保它们之间的匹配,同时也要注意特殊字符和字符编码的处理。

本文链接:http://so.lmcjl.com/news/8766/

展开阅读全文