MySQL使用LOAD DATA LOCAL INFILE导入时首尾字段丢末尾字符如何解决
问题原因
你的LOAD DATA语句未指定和文件匹配的解析规则,MySQL默认配置与你的文件格式不匹配,导致解析异常:
- 默认无字段包裹规则,会把字段前后的双引号识别为字段内容的一部分
- 若文件为Windows环境生成,行结束符为
\r\n,MySQL默认仅将\n作为行结束符,会把行尾的\r识别为最后一个字段的内容,最终导致字段内容截断 - 字段分隔符(制表符/空格)与默认配置不匹配,也会触发字段拆分错误
解决方案
修改导入语句如下,根据你实际的文件格式调整对应参数即可:
LOAD DATA LOCAL INFILE 'ABC' INTO TABLE some_db.some_table FIELDS TERMINATED BY '\t' ENCLOSED BY '"' ESCAPED BY '' LINES TERMINATED BY '\r\n' IGNORE 0 LINES;
- 参数调整说明:
- 如果你的文件字段之间用多个空格分隔,将
TERMINATED BY '\t'替换为TERMINATED BY ' ' - 如果你的文件是Linux/macOS环境生成,将
LINES TERMINATED BY '\r\n'替换为LINES TERMINATED BY '\n' - 如果文件首行是表头不需要导入,将
IGNORE 0 LINES修改为IGNORE 1 LINES
- 如果你的文件字段之间用多个空格分隔,将
内容的提问来源于stack exchange,提问作者Rajat Bhardwaj
相关产品推荐
相关产品推荐

