【问题标题】:Export MYSQL table to CSV. Query doesn't work将 MYSQL 表导出为 CSV。查询不起作用
【发布时间】:2017-10-19 18:51:02
【问题描述】:

我正在尝试将表格的某些字段导出到 csv 文件中... 我正在使用的查询是

SELECT "field1", "field1", "field3"
UNION ALL
SELECT *
FROM mytable
INTO OUTFILE "/Users/davide/Documents/file.csv"
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'

但是mysql返回

ERROR 1222 (21000): The used SELECT statements have a different number of columns

该表还有 2 个字段,但我认为这不是问题。

谢谢

【问题讨论】:

  • 多了两个字段是个问题。 CSV 中相同数量的列必须与您要导入的表相匹配。
  • 如果表有 5 列,但您使用具有 3 列的查询进行 UNION,您为什么不认为这是一个问题?这是 UNION 的标准定义和每个 SQL 实现中的错误。这就是错误消息告诉你的字面意思。

标签: mysql csv export-to-csv


【解决方案1】:

不要使用SELECT *,列出您要放入 CSV 的特定列。 SELECT * 表示返回表中的所有列。

SELECT "field1", "field1", "field3"
UNION ALL
SELECT field1, field2, field3
FROM mytable
INTO OUTFILE "/Users/davide/Documents/file.csv"
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'

【讨论】:

    【解决方案2】:

    问题是当你使用UNION语句时,你必须确保两个SELECTs语句有相同的列数

    如果需要填充“空”的空间,可以使用NULL,例如

    SELECT "field1", "field1", "field3", NULL, NULL
    UNION ALL
    SELECT *
    FROM mytable
    INTO OUTFILE "/Users/davide/Documents/file.csv"
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    

    【讨论】:

    • 查询有效,但是所有字段都在csv中,而不是仅选择
    • 你的第二个选择有一个*,所以它会选择所有这些,你需要指定你希望输出的样子,它也有助于样本输入
    猜你喜欢
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多