2017-10-19 79 views
0

我想要一个表的一些字段导出为CSV文件...... ,我使用的查询是将MYSQL表导出为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个字段,但我不认为这是问题。

感谢

+0

有两个字段是问题。 CSV中的列数必须与您要导入的表格相匹配。 – Adam

+0

为什么你不认为这是一个问题,如果该表有5列,但你的联合查询有3列?这是UNION的标准定义和每个SQL实现中的错误。这实际上是错误信息告诉你的。 –

回答

0

的问题是,当你使用UNION语句,你必须确保两个SELECT的陈述具有相同数量的列

的。如果您需要填写一个“空”的空间,可以使用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' 
+0

该查询可以工作,但是所有的字段都进入了csv,而不是仅仅选择了 – big

+0

你的第二个选择有一个'*'因此它选择了所有这些选项,你需要指定你想要输出的样子,这将有助于还有样本输入 – Moseleyi

2

不要使用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'