You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL导入含JSON数据列的CSV文件时出现Error Code:3140的问题排查及解决求助

解决LOAD DATA导入CSV时JSON格式错误(Error Code:3140)的问题

错误根源分析

你碰到的Error Code: 3140,本质是MySQL解析contracts.version_history列的JSON时,遇到了格式无效的不完整JSON。结合你给的样本数据,核心问题很明确:

  • JSON数据被截断了:样本里的JSON数组最后一个对象只写到"deleted_at"就断了——既没写完键值对(比如缺了:null),也没闭合对象的}和整个数组的],这直接让MySQL无法识别合法的JSON结构。
  • 额外提一句:你样本里用""转义JSON内部的双引号是对的,符合CSVENCLOSED BY '"'的规范,这部分没问题。

修复方案

第一步:先把CSV里的坏JSON修好

首要任务是确保所有JSON列的内容是完整合法的:

  1. 找到截断的那段JSON(就是样本最后那个半截的"deleted_at"),补全成完整的JSON对象,比如参考前面的对象格式补全:
    {"insurance_sum":5000000.0,"no_offer":false,"change_count":0,"created_at":null,"is_preliminary_allowed":null,"remark":null,"updated_by_company_id":null,"is_approval_required":true,"changes_metadata":{},"deleted_at":null,"premium":4121.0,"updated_at":null,"deductible":null,"created_by_company_id":null,"rejection_reason":null,"updated_by_id":null,"_id":"62d55e41204b1f0007a5619f","created_by_id":null,"status":"GENERATED"}
    
  2. 在整个JSON数组的末尾加上],确保数组完全闭合。

第二步:优化LOAD DATA语句(可选但推荐)

为了避免后续再踩类似坑,可以在LOAD DATA里加个SET子句,显式验证JSON的合法性:

LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/contracts_modified.csv' 
INTO TABLE contracts 
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' 
IGNORE 1 ROWS
(@col1, @col2, @col3, @col4, @col5, @col6, @col7, @col8, @col9, @col10, @col11, @json_col, @col13, @col14)
SET 
  _id = @col1,
  broker_id = @col2,
  -- 把其他列按顺序对应好
  version_history = IF(JSON_VALID(@json_col), @json_col, NULL), -- 替换成你实际的JSON列名
  -- 剩下的列继续映射
;
  • 用JSON_VALID()检查JSON合法性,非法的话可以设为NULL(你也可以改成抛出错误,根据自己的需求调整)。
  • 注意要根据你的表结构,把CSV里的列顺序和变量一一对应,再映射到表字段。

第三步:提前验证JSON合法性

修复后,可以先用MySQL自带的函数测试一下JSON是否合法:

SELECT JSON_VALID('[{"insurance_sum":500000.0,...}]'); -- 把省略号换成你完整的JSON字符串

返回1就是合法的,返回0说明还有格式问题,得继续调整。

额外提醒

  • 确保CSV里所有JSON列的双引号都用""转义(你样本里已经做对了,不用改)。
  • 如果你的version_history列是JSON类型,MySQL会强制验证内容,所以必须保证JSON完全合法才能导入。

内容的提问来源于stack exchange,提问作者Treva Antony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 12:32:48