mysql - 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」</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"
感谢您的评论!我回家后会通读!
解决方案
首先,标题中缺少双引号:
,"post_content,
其次,解析器似乎没有\
将嵌入的双引号视为转义。
使用\"
的是“Linux 风格”,其中""
是“Windows 风格”。您的数据还使用\r\n
Windows 风格的 - 所以解析器可能会感到困惑?
无论如何,您应该告诉解析器用作转义字符,或者在导出时\
仅用作转义字符。"
推荐阅读
- wso2 - 如何在没有 200 错误的情况下发送邮件 WSO2 迭代调用
- angular - Angular 6 - 英雄之旅 - getHero - 错误 404
- hibernate - Hibernate JPQL 性能差异
- javascript - 检索访问令牌 reddit API
- sql - Eloquent Laravel:whereHas 没有选择模型表
- javafx - JavaFX 程序设计
- java - 我可以使用 Hibernate Maven 插件从 SQL (DDL) 生成实体类吗?
- kotlin - 如何创建非 Room 的 Room 注释子类?
- c# - 如何更改 C# 错误提示的语言?
- php - 使用 get_posts 获取最接近今天日期的产品,日期元 - 不起作用