【问题标题】:Type Checking in MySQL QueryMySQL 查询中的类型检查
【发布时间】:2011-10-21 17:57:54
【问题描述】:

所以我使用运行以下查询将我的表转储到 CSV 文件:

SELECT * INTO OUTFILE 'testout.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
FROM dbname.tblname;

这很好用,但所有字段都用双引号括起来。我想得到它,以便在输出中只有 varchar (即字符串)字段被引号包围。有什么简单的方法可以做到这一点?它可能会以某种方式涉及查询中的类型检查字段,但我对如何处理这个问题一无所知。任何帮助将不胜感激。

【问题讨论】:

    标签: mysql sql csv into-outfile


    【解决方案1】:

    当您有 OPTIONALLY ENCLOSED BY 时,它应该已经按照您的意愿进行:

    如果您指定 OPTIONALLY,则 ENCLOSED BY 字符仅用于包含具有字符串数据类型(例如 CHAR、BINARY、TEXT 或 ENUM)的列中的值:

    1,"a string",100.20
    2,"a string containing a , comma",102.20
    3,"a string containing a \" quote",102.20
    4,"a string containing a \", quote and comma",102.20
    

    您确定不是每列都有 varchar 列吗?

    【讨论】:

    • 你说得对,谢谢!我将结果与列名列表结合在一起,这肯定弄乱了基本类型的引号。有没有一种简单的方法可以将列名添加为不会破坏双引号的输出的第一行?
    • 我试过了,仍然产生了原始帖子中描述的问题。这是有道理的,因为我猜这些 cols 必须是相同的类型。解决这个问题可能没有简单的方法。
    猜你喜欢
    • 2015-05-08
    • 1970-01-01
    • 2015-06-26
    • 2013-03-16
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 2013-08-31
    • 2019-08-13
    相关资源
    最近更新 更多