de.comp.lang.php.* FAQ

17.4. Wie kann ich eine CSV-Datei aus MySQL exportieren?

Keywords: SQL | Datenbank | MySQL | CSV | Export | outfile

Antwort von Kristian Köhntopp

Die Umkehrung von LOAD DATA INFILE ist das SELECT INTO OUTFILE, eine Variante des regulären SELECT.

SELECT ...
    INTO OUTFILE '/home/www/servers/www.servername.de/tmp/export.csv'
    FIELDS
            TERMINATED BY ';'
            OPTIONALLY ENCLOSED BY '"'
    FROM ...;

Das Kommando wird die Datei auf dem Rechner anlegen, auf dem der Datenbankserver läuft und die Datei wird dem Benutzer gehören, unter dessen User-ID der Datenbankserver abläuft. Der Datenbankserver wird eine existierende Datei nicht überschreiben. Zur Ausführung des Kommandos ist file_priv notwendig.

Eine vollständige Beschreibung des Kommandos in englischer Sprache gibt es im MySQL Manual.

Wenn man kein file_priv hat, muss man sich stattdessen eine entsprechende Funktion in PHP selber bauen. Dabei ist folgendes zu beachten:

  • In CSV-Dateien sind Datensätze durch Kommata getrennt.

  • In CSV-Dateien sind Datensätze, die Sonderzeichen enthalten, insbesondere solche, die Kommata oder Anführungszeichen enthalten, durch Anführungszeichen einzuschließen.

  • In CSV-Dateien dürfen alle Datensätze in Anführungszeichen eingeschlossen werden.

  • In CSV-Dateien sind in Datensätzen, die Anführungszeichen enthalten, die Anführungszeichen zu verdoppeln.

Eine zweispaltige Tabelle, die die Tupel ( a; 10,4) und (b; Er sagte: "Hallo, Du!" ) enthält, muss nach dem Export also so aussehen:

a,"10,4"
b,"Er sagte: ""Hallo, Du!"""

Valid HTML 4.01! Valid CSS!

17.4. Wie kann ich eine CSV-Datei aus MySQL exportieren?
http://www.php-faq.de/q/q-mysql-csv-export.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team