首页 > 解决方案 > csv 文件中的逗号被识别为分隔符,即使它在双引号内

问题描述

我挣扎了2天......有人知道为什么会这样吗?

我做了什么:

我已经将一些数据导出为 csv 文件(mysql)。它用逗号分隔,用双引号括起来。

查询看起来像..

select * from table1 
INTO OUTFILE 'sample.csv'
CHARACTER SET utf8
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n';

这就是 sample.csv 的样子:

"post_name","post_title","post_date","post_thumbnail","post_mainimage","post_content,"meta_description","text2","editor_id"
    "post1","title!|this is title","1451905200","123.jpg","123.jpg","<p>this is description</p> <h2> this is description <br>\"this is description \"</h2><p><span style=\"line-height: 1.8;\">「this is description」&lt;/span></p><p><img alt=\"aa,bb,cc \" class=\"fr-fin fr-dib\" src=\"/files/123.jpg\" title=\"aa,bb,cc \" width=\"300\"></p><p>this is description</p><p><strong>this is description</strong></p><p><span style=\"font-size: 13px;\">this is description<br>this is description</span><br></p>","this is meta_description","this is text2","12"

问题:

当我在 Mac Numbers(以及其他 csv 查看器)上打开此文件时,'aa' 之后似乎逗号被识别为分隔符,因此 'bb' 被放置在表格的下一个单元格中,这是意外的结果,因为我认为双引号内的逗号不会被视为分隔符。

任何建议和帮助将不胜感激!

编辑:

我在编辑时不小心删除了双引号。"post_content实际上也是如此"post_content"

感谢您的评论!我回家后会通读!

标签: mysqlcsv

解决方案


首先,标题中缺少双引号:

,"post_content,

其次,解析器似乎没有\将嵌入的双引号视为转义。

使用\"的是“Linux 风格”,其中""是“Windows 风格”。您的数据还使用\r\nWindows 风格的 - 所以解析器可能会感到困惑?

无论如何,您应该告诉解析器用作转义字符,或者在导出时\仅用作转义字符。"


推荐阅读