将Mysql查询的结果导出为ex​​cel?

时间:2012-04-24 09:31:30

标签: mysql excel export

我的要求是存储查询的整个结果

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

到Excel文件。

7 个答案:

答案 0 :(得分:82)

实现此目的的典型方法是导出为CSV,然后将CSV加载到Excel中 您可以使用任何MySQL命令行工具通过在INTO OUTFILE语句中包含SELECT子句来执行此操作:

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

有关详细选项,请参阅this link

或者,您可以使用mystabldump将转储存储为使用--tab选项的分隔值格式,请参阅this link.

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

答案 1 :(得分: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');

答案 2 :(得分:6)

使用以下查询:

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

答案 3 :(得分:3)

在我的情况下,我需要将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(foo SEPARATOR 0x09)的制表符将被写为 &#39; \吨&#39;在输出文件中。 0x09字符是ASCII TAB。但是这个问题并不特定于我们将sql结果转储到文件的方式。它可能与我的寻呼机有关。当你找到这个问题的答案时,请告诉我。我会更新这篇文章。

答案 4 :(得分:0)

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

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

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

答案 5 :(得分:0)

我用来将 mysql 输出导出到文件的快速而肮脏的方法是

<块引用>

$ mysql --tee=

然后在任何需要的地方使用导出的输出(您可以在 <file_path> 中找到)。

请注意,这是避免使用 secure-file-priv 选项运行数据库的唯一方法,这会阻止使用之前答案中建议的 INTO OUTFILE

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

答案 6 :(得分:0)

对于 SHOW DATABASESSHOW TABLES

INTO OUTFILESHOW TABLESSHOW DATABASES 查询不起作用。< /p>

在这种情况下,您可以:

  1. SHOW DATABASES
mysql -u <user> -p <password> -e 'SHOW DATABASES' > <path_to_file>
  1. SHOW TABLES
mysql -u <user> -p <password> -e 'SHOW TABLES FROM <db_name>' > <path_to_file>
<块引用>

提示: -e 标志代表 execute

参考: