Wie kann ich die Ergebnisse einer MySQL-Abfrage im CSV-Format ausgeben?
Gibt es eine einfache Möglichkeit, eine MySQL-Abfrage über die Linux-Befehlszeile auszuführen und die Ergebnisse im CSV -Format auszugeben?
Hier's was ich're tun jetzt:
mysql -u uid -ppwd -D dbname << EOQ | sed -e 's/ /,/g' | tee list.csv
select id, concat("\"",name,"\"") as name
from students
EOQ
Es wird unübersichtlich, wenn es viele Spalten gibt, die von Anführungszeichen umgeben sein müssen, oder wenn es Anführungszeichen in den Ergebnissen gibt, die escaped werden müssen.
1112
3
Von http://www.tech-recipes.com/rx/1475/save-mysql-query-results-into-a-text-or-csv-file/
Bei Verwendung dieses Befehls werden die Spaltennamen nicht exportiert.
Beachten Sie auch, dass
/var/lib/mysql-files/orders.csv
auf dem Server liegt, auf dem MySQL läuft. Der Benutzer, unter dem der MySQL-Prozess läuft, muss Schreibrechte für das ausgewählte Verzeichnis haben, sonst schlägt der Befehl fehl.Wenn Sie die Ausgabe von einem entfernten Server (insbesondere einem gehosteten oder virtualisierten Rechner wie Heroku oder Amazon RDS) auf Ihren lokalen Rechner schreiben möchten, ist diese Lösung nicht geeignet.
Sie erhalten dann eine tabulatorgetrennte Datei. Da Kommas (oder Zeichenketten, die Kommas enthalten) nicht escaped werden, ist es nicht einfach, das Trennzeichen auf Komma zu ändern.
Alternativ zur obigen Antwort können Sie auch eine MySQL-Tabelle haben, die die CSV-Engine verwendet.
Dann haben Sie eine Datei auf Ihrer Festplatte, die immer im CSV-Format vorliegt und die Sie einfach kopieren können, ohne sie zu bearbeiten.