MySQL导出CSV时如何同时转义反斜杠与双引号?
解决MySQL导出CSV时同时转义双引号和反斜杠的问题
没问题,咱们直接调整你的INTO OUTFILE语句就能实现同时转义双引号和反斜杠的需求。先看修改后的完整SQL:
SELECT `col 1`, `col 2`, `col 3`, `col 4`, `col 5` FROM table_name INTO OUTFILE '/test.csv' CHARACTER SET utf8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n';
关键修改点说明:
- 把原来的
ESCAPED BY '"'改成了ESCAPED BY '\\':- SQL语法里反斜杠需要用另一个反斜杠转义,所以这里写
'\\'实际是告诉MySQL用单个反斜杠作为转义字符。 - 当用反斜杠作为转义符时,MySQL会自动处理两种字符:
- 反斜杠本身:字段里的
\会被转成\\ - 你设置的
OPTIONALLY ENCLOSED BY字符(也就是双引号):字段里的"会被转成\"
- 反斜杠本身:字段里的
- SQL语法里反斜杠需要用另一个反斜杠转义,所以这里写
- 保留
OPTIONALLY ENCLOSED BY '"'的作用:如果字段里包含逗号、换行符这类特殊字符,MySQL会自动用双引号把整个字段包裹起来,内部的双引号已经被反斜杠转义,不会破坏CSV的格式。
额外注意事项:
确保MySQL进程有写入/test.csv路径的权限,另外如果你的MySQL配置了secure_file_priv参数,导出路径需要符合该参数的限制,否则会报错。
内容的提问来源于stack exchange,提问作者Dhileep
相关产品推荐
相关产品推荐

