2012-04-24 90 views
38

我的要求是查询将Mysql查询的结果导出为ex​​cel?

SELECT * FROM document 
WHERE documentid IN (SELECT * FROM TaskResult WHERE taskResult = 2429) 

的整个结果存储到Excel文件。

+1

哼哼......这有点含糊!任何技术,编程语言,约束,礼貌,“代码风格”? – sp00m 2012-04-24 09:33:07

+1

您可以使用[Toad for MySQL(Freeware)](http://www.quest.com/toad-for-mysql)来实现此目的。 – DocJones 2012-04-24 09:50:44

+1

@Priya,根据您的使用情况,也可以查看官方的[MySQL for Excel](https://www.mysql.com/why-mysql/windows/excel/)。 – Pacerier 2015-04-28 08:33:49

回答

68

实现此目的的典型方法是导出为CSV,然后将CSV加载到Excel中。
你可以使用任何MySQL命令行工具,方式包括在您SELECT声明INTO OUTFILE子句来做到这一点:

SELECT ... FROM ... WHERE ... 
INTO OUTFILE 'file.csv' 
FIELDS TERMINATED BY ',' 

的详细选项见this link

或者,您可以使用mysqldump来存储转储到使用--tab选项分隔值格式,请参阅this link.

mysqldump -u<user> -p<password> -h<host> --where=jtaskResult=2429 --tab=<file.csv> <database> TaskResult 
+0

我的专栏被解雇了请问是什么问题? – danielad 2013-07-17 13:10:24

+0

我不明白这个问题。 “解雇”? – 2013-07-23 13:33:48

+1

我看不到cvs导入的 – danielad 2013-07-24 07:39:14

6

很好的例子是,当柜面,如果你的查询结束后写它的你有加入或者接近:

select 'idPago','fecha','lead','idAlumno','idTipoPago','idGpo' 
union all 
(select id_control_pagos, fecha, lead, id_alumno, id_concepto_pago, id_Gpo,id_Taller, 
id_docente, Pagoimporte, NoFactura, FacturaImporte, Mensualidad_No, FormaPago, 
Observaciones from control_pagos 
into outfile 'c:\\data.csv' 
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n'); 
+0

该OP指Excel文件不是CSV。 – Vizkrig 2016-11-30 06:23:09

+0

这可能是graham.reeds寻找的。 – MattBianco 2017-10-26 09:55:52

5

使用下面的查询:

SELECT * FROM document INTO OUTFILE 'c:/order-1.csv' FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' LINES TERMINATED BY '\n'; 
1

在我的情况下,我需要将sql结果转储到客户端的文件中。这是最典型的情况。您无权访问服务器,或者您不想将结果写入服务器。问题是你有一个复杂的查询,持续多行;您不能使用命令行轻松地将结果转储到文件。

mysql -h hostname -d databasename -u username -ppwd -e "mysql simple sql statement that last for less than a line" > outputfile_on_the.client 

,你可以把你的复杂查询到一个文件:longquery_file.sql 的执行命令

mysql -h hn -d dn -u un -ppwd <longquery_file.sql> output.txt 

这为我工作。我唯一的困难是有时我用于group_cancat的tab字符(foo SEPARATOR 0x09)将在输出文件中写为 '\ t'。 0x09字符是ASCII TAB。但是,这个问题并不是我们将sql结果转储到文件的方式。它可能与我的寻呼机有关。当你找到这个问题的答案时让我知道。我会更新这篇文章。

0

这是一个古老的问题,但它仍然是Google的首批成果之一。最快的方法是使用ODBC查询或MySQL For Excel将MySQL直接链接到Excel。后者是在对OP的评论中提到的,但我觉得它真的值得自己回答,因为导出到CSV并不是实现这一目标的最有效方式。

ODBC Queries - 这是一个稍微复杂的设置,但它更加灵活。例如,MySQL For Excel加载项不允许您在查询表达式中使用WHERE子句。此方法的灵活性还允许您以更复杂的方式使用数据。

MySQL For Excel - 如果您不需要对查询进行任何复杂的操作,或者您需要快速轻松地完成某件事情,请使用此加载项。您可以在数据库中创建视图以解决某些查询限制。