web-dev-qa-db-ger.com

Ergebnisse einer Mysql-Abfrage in Excel exportieren?

Meine Anforderung ist, die gesamten Ergebnisse der Abfrage zu speichern

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

in eine Excel-Datei.

46
Priya

Der typische Weg, dies zu erreichen, besteht darin, in CSV zu exportieren und die CSV anschließend in Excel zu laden.
Sie können jedes MySQL-Befehlszeilentool verwenden, indem Sie die INTO OUTFILE-Klausel in Ihre SELECT-Anweisung einfügen:

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

Siehe diesen Link für detaillierte Optionen.

Alternativ können Sie mysqldump verwenden, um dump mit der Option --tab in einem separaten Wertformat zu speichern, siehe diese Verknüpfung.

mysqldump -u<user> -p<password> -h<Host> --where=jtaskResult=2429 --tab=<file.csv> <database> TaskResult
80
Roland Bouman

Ein gutes Beispiel kann sein, wenn Sie nach dem Ende Ihrer Abfrage schreiben, ob Sie Verknüpfungen haben oder in der Nähe:

 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');
6
danielad

Verwenden Sie die folgende Abfrage:

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

In meinem Fall muss das SQL-Ergebnis in eine Datei auf der Clientseite gespeichert werden. Dies ist die typischste Situation. Sie haben keinen Zugriff auf den Server oder möchten Ihr Ergebnis nicht auf den Server schreiben. Das Problem ist, dass Sie eine komplizierte Abfrage haben, die mehrere Zeilen dauert. Sie können die Befehlszeile nicht verwenden, um das Ergebnis problemlos in eine Datei zu kopieren. 

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

sie können Ihre komplizierte Abfrage in eine Datei einfügen: longquery_file.sql Den Befehl ausführen

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

Das hat bei mir funktioniert. Die einzige Schwierigkeit bei mir ist, dass das Tabulatorzeichen, das ich manchmal für group_cancat (foo SEPARATOR 0x09) verwende, als '\ T' in die Ausgabedatei geschrieben wird. Das Zeichen 0x09 ist ASCII TAB. Dieses Problem ist jedoch nicht spezifisch für die Art und Weise, wie SQL-Ergebnisse in eine Datei geschrieben werden. Es kann mit meinem Pager zusammenhängen. Lassen Sie mich wissen, wenn Sie eine Antwort auf dieses Problem finden. Ich werde diesen Beitrag aktualisieren.

2
Kemin Zhou

Dies ist eine alte Frage, aber es ist immer noch eines der ersten Ergebnisse bei Google. Der schnellste Weg, dies zu tun, besteht darin, MySQL mit Abfragen ODBC oder MySQL For Excel direkt mit Excel zu verknüpfen. Letzteres wurde in einem Kommentar zum OP erwähnt, aber ich hatte den Eindruck, dass es seine eigene Antwort wirklich verdient hat, da der Export in CSV nicht der effizienteste Weg ist, um dies zu erreichen.

ODBC Queries - Das Setup ist etwas komplizierter, aber es ist viel flexibler. Beispielsweise können Sie mit dem Add-In MySQL für Excel keine WHERE-Klauseln in den Abfrageausdrücken verwenden. Durch die Flexibilität dieser Methode können Sie die Daten auch auf komplexere Weise nutzen.

MySQL For Excel - Verwenden Sie dieses Add-In, wenn Sie mit der Abfrage nichts Komplexes tun oder etwas schnell und einfach erledigen müssen. Sie können Ansichten in Ihrer Datenbank erstellen, um einige der Abfrageeinschränkungen zu umgehen.

0
Anthony