MySQL Workbench导入CSV文件报charmap解码错误如何解决?
MySQL Workbench导入CSV报charmap解码错误解决方案
未处理异常:'charmap' can't decode byte 0x9d in position 2890. char maps to undefined
该报错本质是MySQL Workbench内置Python环境未正确使用你指定的编码解析CSV文件,默认调用了系统本地字符集(Windows环境通常为GBK/cp1252),遇到编码不兼容的特殊字符时解码失败,可按以下方案依次排查解决:
解决方案
方案1:确认CSV文件真实编码
- 用文本编辑器(如Notepad++)打开CSV文件,点击「编码」菜单查看真实编码:
- 如果是Excel导出的CSV,默认编码为GBK/GB2312,导入Workbench时编码选项直接选择
GBK即可,不需要选UTF-8 - 如果编码显示为UTF-8-BOM,选择「转为UTF-8」后保存文件再尝试导入
- 定位到文件2890字节位置附近,删除不可见特殊字符、乱码内容后重新导入
- 如果是Excel导出的CSV,默认编码为GBK/GB2312,导入Workbench时编码选项直接选择
方案2:修改Workbench内置Python的默认编码
- 打开Workbench安装目录,默认路径为
C:\Program Files\MySQL\MySQL Workbench 8.0 CE\ - 进入
modules目录,找到CSV导入模块脚本wb_import_csv.py - 在脚本开头的import语句块后,添加以下代码强制指定默认编码为UTF-8,保存后重启Workbench即可:
import sys reload(sys) sys.setdefaultencoding('utf8')
方案3:使用MySQL命令行导入绕过GUI限制
如果GUI导入持续报错,可直接用SQL命令完成导入,操作如下:
- 先在数据库中创建和CSV字段对应的表结构
- 执行导入命令:
LOAD DATA INFILE 'C:/xxx/你的文件.csv' -- 注意路径用斜杠/,不要用反斜杠 INTO TABLE 目标表名 CHARACTER SET utf8 -- 对应你CSV的真实编码 FIELDS TERMINATED BY ',' -- CSV字段分隔符,根据实际调整 ENCLOSED BY '"' -- 字段包裹符,根据实际调整 LINES TERMINATED BY '\r\n' -- 换行符,Windows导出的CSV通常为\r\n IGNORE 1 ROWS; -- 如果CSV第一行是表头,加该行跳过表头
如果执行时报secure_file_priv相关错误,将CSV文件移动到show variables like '%secure_file_priv%'查询结果对应的目录下即可。
内容的提问来源于stack exchange,提问作者YATIN DIXIT
相关产品推荐
相关产品推荐

