将Mysql查询的结果导出为excel?
我的要求是存储查询的全部结果
SELECT * FROM document WHERE documentid IN (SELECT * FROM TaskResult WHERE taskResult = 2429)
到一个Excel文件。
达到此目的的典型方法是导出为CSV,然后将CSV加载到Excel中。
您可以使用任何MySQL命令行工具,通过在您的SELECT
语句中包含INTO OUTFILE
子句来执行此操作:
SELECT ... FROM ... WHERE ... INTO OUTFILE 'file.csv' FIELDS TERMINATED BY ','
看到这个链接的详细选项。
或者,您可以使用mysqldump使用–tab选项将转储存储为单独的值格式,请参阅此链接。
mysqldump -u<user> -p<password> -h<host> --where=jtaskResult=2429 --tab=<file.csv> <database> TaskResult
好的例子可以是当你的查询结束后,如果你有连接或在哪里closures写:
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');
使用下面的查询:
SELECT * FROM document INTO OUTFILE 'c:/order-1.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
在我的情况下,我需要将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结果转储到文件的方式。 这可能与我的传呼机有关。 让我知道当你find这个问题的答案。 我会更新这个post。
这适用于命令行中的sqlite3。
sqlite3 ~/Documents/Databases/name.db .output file.csv .headers on .mode csv Select * from TaskResult where taskResult = 2429;