【问题标题】:Problem about exporting mysql query result into csv filemysql查询结果导出到csv文件的问题
【发布时间】:2018-09-25 19:39:26
【问题描述】:

我想将 mysql 查询结果导出到 csv 文件,但我发现有东西 csv文件格式错误。

输入:

COMPANY AMOUNT VENDOR_NAME
    C1   70000           A
    C2    6000           A
    C3    2000           A
    C2   39000           B
    C3    4000           B
    C3   40000           C

输出:

VENDOR_NAME     C1     C2      C3    Total
          A  
             70000   6000    2000    78000
          B  
                 0  39000    4000    43000
          C  
                 0      0   40000    40000

在我的输出中,供应商名称和其他数字不在同一行...我不知道为什么。也许我的代码中有一些错误。

这是我的代码。

CREATE TABLE test(
    COMPANY VARCHAR(50),
    AMOUNT DECIMAL(10,2),
    VENDOR_NAME VARCHAR(100)
);

LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/try.csv' INTO TABLE test
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(COMPANY,AMOUNT,VENDOR_NAME);

SELECT 'VENDOR_NAME','C1','C2','C3','Grand Total'
UNION ALL
SELECT 
    VENDOR_NAME,
    SUM(CASE
            WHEN COMPANY = 'C1' THEN AMOUNT
            ELSE 0
        END) AS C1,
    SUM(CASE
            WHEN COMPANY = 'C2' THEN AMOUNT
            ELSE 0
        END) AS C2,
    SUM(CASE
            WHEN COMPANY = 'C3' THEN AMOUNT
            ELSE 0
        END) AS C3,
    SUM(AMOUNT) AS Grand_Total

INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/Result.csv'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
FROM
    test
GROUP BY VENDOR_NAME;

【问题讨论】:

  • 除非它只是您在此处显示的方式,否则输入或输出似乎都不是 CSV 格式

标签: mysql sql csv


【解决方案1】:

我认为您没有正确定义行尾字符。在 Windows 中,您可能必须使用:

LINES TERMINATED BY '\r\n' 

正确读取文件。 VENDOR_NAME 列的字符串末尾似乎有 '\r' 字符。

更多信息请查看LOAD DATA INFILE Syntax

【讨论】:

    猜你喜欢
    • 2017-12-31
    • 2010-11-17
    • 2013-05-13
    • 2014-05-29
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多