【问题标题】:Add extra columns for MySQL export to csv?为 MySQL 导出添加额外的列到 csv?
【发布时间】:2013-06-14 22:08:38
【问题描述】:

我已成功将 MySQL 中的表导出到带有列的 csv。我在Include headers when using SELECT INTO OUTFILE?使用了这个人的回答

选择“ColName1”、“ColName2”、“ColName3”

联合所有

选择 ColName1、ColName2、ColName3

FROM YourTable
INTO OUTFILE '/path/outfile'

但是,我想将查询公式导出为要添加到 csv 文件的新列。我尝试在第二个 SELECT 语句之后添加一个额外的计算列。 MySQL 给了我一个错误,说“使用的 SELECT 语句有不同的列数”。

示例公式:SELECTCAST((ColName1 * ColName2)ASDECIMAL(7,2))ASColNameX。我不确定在导出语句中的何处输入。

【问题讨论】:

    标签: mysql csv export


    【解决方案1】:

    要使 UNION 工作,您必须具有相同数量的列并且它们必须属于相同类型。当您将标题行创建为文本时,第二个查询中的所有列也必须是文本。像这样:

    SELECT 'ColName1', 'ColName2', 'ColName3', 'New Column'
    UNION ALL
    SELECT 
      ColName1
      ,ColName2
      ,ColName3
      ,CAST(CAST((ColName1 * ColName2) AS DEC(5,2)) AS CHAR)
    FROM YourTable
    INTO OUTFILE '/path/outfile'
    

    【讨论】:

    • 如果我想以精确的精度(例如 3 位、精度 2)对新列值进行修剪怎么办?还是我通过 Excel 修剪值(我正在导入 csv 的程序)?
    • 我在 VARCHAR 附近遇到 mysql 语法错误。所涉及的列都是十进制的。我通过 CAST((ColName1 * ColName2) AS DEC(5,2)) 解决了这个问题,一切都按预期输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2020-06-04
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    相关资源
    最近更新 更多