MySQL使用LOAD DATA INFILE导入CSV时'\n'作为行终止符不生效问题
问题原因
最常见的诱因是MySQL开启了NO_BACKSLASH_ESCAPES SQL模式,这种模式下反斜杠不会被识别为转义字符,你写的'\n'会被解析为「反斜杠+字母n」的两个普通字符,而不是换行符,因此无法匹配文件里的行尾标识。
除此之外,不同操作系统的客户端和服务端交互时,也可能出现转义符解析偏差,导致\n无法被正确识别为换行符。
解决方法
直接使用换行符的十六进制编码代替转义写法,规避转义解析问题,修改后的导入语句如下:
LOAD DATA LOCAL INFILE '/home/vsafonov/testDir/test.csv' INTO TABLE express.objs FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY 0x0A IGNORE 1 LINES;
如果执行后仍然有问题,可以先运行以下语句临时关闭反斜杠转义禁用规则,再执行导入:
SET sql_mode = REPLACE(@@sql_mode, 'NO_BACKSLASH_ESCAPES', '');
内容的提问来源于stack exchange,提问作者Vladimir Safonov
相关产品推荐
相关产品推荐

