Alle bisherigen Lösungen hier, mit Ausnahme der MySQL-Workbench, sind falsch und möglicherweise unsicher (dh Sicherheitsprobleme) für zumindest einige mögliche Inhalte in der MySQL-Datenbank.
MYSQL Workbench (und ähnlich PHPMyAdmin) bieten eine formal korrekte Lösung, dienen jedoch zum Herunterladen der Ausgabe an den Standort eines Benutzers. Sie sind nicht so nützlich für Dinge wie die Automatisierung des Datenexports.
Es ist nicht möglich, zuverlässig korrektes CSV aus der Ausgabe von zu generieren, mysql -B -e 'SELECT ...'
da dies keine Wagenrückläufe und Leerzeichen in Feldern codieren kann. Das '-s'-Flag für MySQL führt zu einem Backslash-Escape und kann zu einer korrekten Lösung führen. Die Verwendung einer Skriptsprache (eine mit anständigen internen Datenstrukturen, dh nicht Bash) und Bibliotheken, in denen die Codierungsprobleme bereits sorgfältig ausgearbeitet wurden, ist jedoch weitaus sicherer.
Ich dachte darüber nach, ein Skript dafür zu schreiben, aber sobald ich darüber nachdachte, wie ich es nennen würde, kam mir der Gedanke, nach bereits existierenden Arbeiten mit demselben Namen zu suchen. Obwohl ich nicht gründlich darauf eingegangen bin, sieht die Lösung unter https://github.com/robmiller/mysql2csv vielversprechend aus. Abhängig von Ihrer Anwendung kann der yaml-Ansatz zur Angabe der SQL-Befehle jedoch ansprechen oder auch nicht. Ich bin auch nicht begeistert von der Forderung nach einer neueren Version von Ruby, als sie standardmäßig mit meinem Ubuntu 12.04-Laptop oder Debian Squeeze-Servern geliefert wird. Ja, ich weiß, dass ich RVM verwenden könnte, aber ich würde das lieber nicht für einen so einfachen Zweck beibehalten.
Hoffentlich wird jemand auf ein geeignetes Werkzeug hinweisen, das ein bisschen getestet wurde. Andernfalls werde ich dies wahrscheinlich aktualisieren, wenn ich einen finde oder schreibe.
REPLACE()
in Ihrer Abfrage verwenden, dass die Anführungszeichen maskiert werden.