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

MySQL导入CSV时如何去除字符串换行符避免JOIN操作异常

导入错误原因

你的导入语句配置的行终止符和CSV文件实际的行终止符不匹配。Windows系统生成的CSV文件默认行结束符为\r\n(回车+换行),你当前语句仅配置了LINES TERMINATED BY '\n',导入时仅截断了末尾的换行符\n,剩余的回车符\r被识别为最后一列字段值的一部分,因此会出现字段长度多1、末尾带不可见\r的问题,直接导致JOIN时字段值匹配失败。

解决方案
  • 修正导入配置(治本方案)
    后续导入同类CSV时,将行终止符修改为\r\n即可从根源避免该问题,修改后语句如下:
LOAD DATA LOCAL INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/new_tbl_1.csv' 
INTO TABLE tbl_1
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS;

如果导入的是Linux/macOS生成的CSV,行终止符用\n即可,可根据文件实际的换行规则调整配置。

  • 修复已导入的存量数据
    如果不需要重新导入全量数据,可直接执行UPDATE语句清理字段末尾的\r,将语句中的last_col替换为你表的最后一列字段名即可:
UPDATE tbl_1 SET last_col = TRIM(TRAILING '\r' FROM last_col);

如果确认字段中不会出现中间带\r的场景,也可以用REPLACE全量清理:

UPDATE tbl_1 SET last_col = REPLACE(last_col, '\r', '');
  • 临时兼容JOIN查询(不推荐长期使用)
    如果暂时不便修改存量数据,可在JOIN时实时处理字段值,但该写法会跳过该字段的索引,大数据量下性能较差:
SELECT * FROM tbl_1 t1
INNER JOIN 关联表 t2 
ON TRIM(TRAILING '\r' FROM t1.last_col) = t2.关联字段名;

内容的提问来源于stack exchange,提问作者Joseph Erickson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 08:06:07