使用LOAD DATA INFILE导入CSV至MySQL显示异常,求助
解决CSV导入MySQL后字段包含换行符导致查询结果混乱的问题
问题原因
你的CSV文件每行结尾的换行符(Windows格式的\r\n对应十六进制0D、0A,Unix格式的\n对应0A)被MySQL当成了Dealer_Name字段的一部分存储。这是因为执行LOAD DATA INFILE时仅指定了字段分隔符,未明确指定行分隔符,导致MySQL无法正确识别每行的结束位置,把换行符塞进了字段里,最终查询时出现格式混乱。
解决方案
方案1:重新导入时处理换行符
修改LOAD DATA INFILE语句,明确行分隔符,同时用TRIM函数清理字段内的换行符:
LOAD DATA INFILE '/dealer_df.csv' INTO TABLE Dealers FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' -- 若CSV是Unix风格换行,改为'\n' IGNORE 1 ROWS (Dealer_ID, @temp_name) SET Dealer_Name = TRIM(BOTH '\r\n' FROM @temp_name);
LINES TERMINATED BY:指定CSV每行的结束标识,匹配文件实际的换行格式TRIM(BOTH '\r\n' FROM @temp_name):清理临时变量中字段前后的所有换行符(兼容两种换行格式)
方案2:清理已导入的错误数据
如果已经完成导入,直接执行UPDATE语句修正现有数据:
UPDATE Dealers SET Dealer_Name = TRIM(BOTH '\r\n' FROM Dealer_Name);
执行完成后再查询SELECT * FROM Dealers,结果就会规整显示。
内容的提问来源于stack exchange,提问作者Zach Greenleaf
相关产品推荐
相关产品推荐

