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

Pri*_*iya 51 mysql excel export

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

SELECT * FROM document 
WHERE documentid IN (SELECT * FROM TaskResult WHERE taskResult = 2429)
Run Code Online (Sandbox Code Playgroud)

到Excel文件.

Rol*_*man 89

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

SELECT ... FROM ... WHERE ... 
INTO OUTFILE 'file.csv'
FIELDS TERMINATED BY ','
Run Code Online (Sandbox Code Playgroud)

有关详细选项,请参阅此链接.

或者,您可以使用mysqldump将转储存储为使用--tab选项的分隔值格式,请参阅此链接.

mysqldump -u<user> -p<password> -h<host> --where=jtaskResult=2429 --tab=<file.csv> <database> TaskResult
Run Code Online (Sandbox Code Playgroud)

  • 运行此命令时,这个csv文件到底在哪里? (5认同)

dan*_*lad 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');
Run Code Online (Sandbox Code Playgroud)


Adi*_*edi 6

使用以下查询:

 SELECT * FROM document INTO OUTFILE 'c:/order-1.csv' FIELDS TERMINATED BY ','  
 ENCLOSED BY '"' LINES TERMINATED BY '\n';
Run Code Online (Sandbox Code Playgroud)


Kem*_*hou 5

就我而言,我需要将 sql 结果转储到客户端的文件中。这是从数据库卸载数据的最典型用例。在许多情况下,您无权访问服务器或不想将结果写入服务器。

mysql -h hostname -u username -ppwd -e "mysql simple sql statement that last for less than a line" DATABASE_NAME > outputfile_on_the.client
Run Code Online (Sandbox Code Playgroud)

当您有一个持续多行的复杂查询时,就会出现问题;您无法使用命令行轻松地将结果转储到文件中。在这种情况下,您可以将复杂的查询放入文件中,例如 longquery_file.sql,然后执行命令。

mysql -h hn -u un -ppwd < longquery_file.sql DBNAME > output.txt
Run Code Online (Sandbox Code Playgroud)

这对我有用。对我来说唯一的困难是制表符;有时我使用的 for group_cancat(foo SEPARATOR 0x09) 将在输出文件中写为 '\t' 。0x09 字符是 ASCII TAB。但这个问题并不是我们将 sql 结果转储到文件的方式所特有的。可能和我的寻呼机有关。当您找到此问题的答案时请告诉我。我会更新这篇文章。