MySQL: CSV Export als auf dem Server gespeicherte Datei
Tutorial von Stefan Trost | 01.08.2011 um 15:14
In dieser Info zeige ich, wie man eine MySQL Tabelle in eine CSV Datei abspeichern kann, die dann auf dem Server abgespeichert wird. Möchten Sie die CSV-Datei lieber als automatisch startender Download haben, sollten Sie in dieses Tutorial schauen.
Was vielen nicht bewusst ist: Für den Export als Datei hält MySQL bereits eine Abwandlung des normalen SELECT Befehls bereit:
SELECT * INTO OUTFILE 'test.csv' FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n' FROM tabelle WHERE 1
Die Anweisungen von SELECT, FROM und WHERE unterscheiden sich hier nicht von einer normalen MySQL SELECT Anfrage. Hinter SELECT kann man ganz normal die Felder angeben, die exportiert werden sollen. Im Beispiel benutzen wir *, um alle Felder der Tabelle zu exportieren. Hinter FROM geben wir wie gewohnt die Tabelle an, die exportiert werden soll und hinter dem WHERE können wir wie bei einem normalen SELECT auch Bedingungen dafür definieren, welche Spalten exportiert werden sollen. Mit "WHERE 1" exportieren wir die komplette Tabelle, man kann dies aber auch weglassen.
Unterschied zum normalen SELECT
Interessant wird es, wenn wir uns die Unterschiede zu einem normalen SELECT ansehen: Der Unterschied ist das, was hinter "INTO OUTFILE" kommt. Wir schauen uns die Befehle einmal im Detail an:
INTO OUTFILE
Hinter diesem Befehl notieren wir die Datei, in die die Ausgabe erfolgen soll. Im Beispiel benutzen wir die Datei "test.csv". Die Datei wird auf dem Computer gespeichert, auf dem auch die Datenbank liegt. Benutzen wir XAMPP, wird der Speicherort zum Beispiel "C:\xampp\mysql\data" sein.
Schwieriger wird es, wenn wir bei einem Shared Hoster sind und keinen eigenen Server besitzen. Dann wird sich der Computer auf dem die Datenbank liegt unter Umständen von dem Webspace unterscheiden.
Wir können aber die PHP Funktion getcwd() benutzen, um den absoluten Pfad unseres Webspaces herauszufinden und dann ausprobieren, direkt in diesem Pfad zu speichern. Zum Beispiel kann das im Falle von XAMPP "INTO OUTFILE 'c:/xampp/htdocs/seitex/test.csv'" sein. Wenn das nicht funktioniert, können wir immer noch eine CSV Datei mit PHP erzeugen. Wichtig: MySQL wird keine existierende Datei überschreiben, die Datei darf noch nicht existieren, damit es funktioniert.
FIELDS
Hinter FIELDS notieren wir, nach welchen Regeln die Felder der CSV Datei formatiert werden sollen:
TERMINATED BY
Gibt das Trennzeichen an, mit dem die einzelnen Felder getrennt sind. Es bietet sich hier das Semikolon ";" wie im Beispiel oder das Komma "," an.
OPTIONALLY ENCLOSED BY
Falls ein Feld unser Trennzeichen enthält, würd die Ordnung der CSV Datei durcheinander geraten. Deswegen geben wir hier ein Zeichen wie " an, mit dem die Felder umschlossen werden. So ergibt sich zum Beispiel: "Wert 1","Wert 2","Wert 3" und so weiter. Lassen wir das "OPTIONALLY" weg, wird jedes Feld mit mit dem Zeichen eingerahmt, schreiben wir das "OPTIONALLY", wird nur eingerahmt wenn nötig. Zahlen bleiben dann zum Beispiel als Zahlen ohne Anführungszeichen stehen.
LINES TERMINATED BY
Auch was die Zeilen angeht können wir bestimen, womit einzelne Zeilen der CSV Datei getrennt werden sollen. Im Beispiel benutzen wir den Zeilenumbruch von Windows "\r\n". Man kann aber auch jeden anderen Trenner angeben oder den Befehl ganz weglassen.
Über den Autor
Software von Stefan Trost finden Sie auf sttmedia.de. Benötigen Sie eine individuelle Software nach Ihren eigenen Wünschen? Schreiben Sie uns: sttmedia.de/kontakt
Profil anzeigen
Ähnliche Themen
MySQL: CSV Export als automatischer Download
Tutorial | 1 Kommentar
Ist das Liebeskummer oder was anderes?
Offene Frage | 1 Antwort
Viele CSV-Dateien in XLSX- oder ODS-Spreadsheets konvertieren
Tutorial | 0 Kommentare
MySQL: Daten aus Tabelle löschen - Unterschied zwischen TRUNCATE, DELETE und DROP
Tutorial | 0 Kommentare
MySQL: Aktuelles Datum oder Zeit in Spalte schreiben
Tutorial | 0 Kommentare
MySQL: 3 Wege um Definitionen und Aufbau einer Tabelle anzuzeigen
Info | 0 Kommentare
Mehrere Texte gleichzeitig ersetzen
Tutorial | 0 Kommentare
Wichtiger Hinweis
Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.
Jetzt mitmachen
Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.