17.3. Wie kann ich eine CSV-Datei in MySQL importieren?Antwort von Kristian KöhntoppIn MySQL gibt es die Anweisung LOAD DATA INFILE zum Importieren von Dateien im CSV-Format in die Datenbank. Diese Anweisung wird vom Datenbankserver ausgeführt, d.h. die Datei muss auf dem Rechner liegen, auf dem der Datenbankserver abläuft und die Datei muss world-readable sein. Man benötigt file_priv, um dieses Kommando ausführen zu können. Seit Version 3.22.6 von MySQL gibt es die Kommandovariante LOAD DATA LOCAL INFILE zum Importieren von Daten im CSV-Format. Dieses Kommando wird auf dem MySQL-Client (also im PHP-Interpreter) ausgeführt. Die Datei muss also auf dem Rechner liegen, auf dem der Client läuft und durch den Client lesbar sein. Man benötigt keine besonderen Privilegien, um dieses Kommando ausführen zu können. Dies ist die empfohlene Variante des Kommandos, falls die zur Verfügung steht. Das folgende SQL-Kommando liest eine Datei ein, bei der die Datensätze optional mit Anführungszeichen eingeschlossen sind und durch Semikolons getrennt sind. Vorhandene Datensätze in der Tabelle, die ebenfalls im Import enthalten sind, werden durch den Import überschrieben. LOAD DATA LOCAL INFILE '/home/www/servers/www.servername.de/tmp/import.csv' REPLACE INTO TABLE tabellenname FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"'; Eine vollständige Beschreibung des Kommandos in englischer Sprache ist Bestandteil des MySQL Manuals unter der URL http://dev.mysql.com/doc/mysql/en/load-data.html. Will man die Daten manuell laden, darf man die Zeile nicht mit explode() zerlegen, weil dies bei Datensätzen versagt, die selbst Kommata enthalten. Stattdessen bietet PHP die Funktion fgetcsv() an. |
||
17.3. Wie kann ich eine CSV-Datei in MySQL importieren? http://www.php-faq.de/q/q-mysql-csv-import.html |
||
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team |