Ankündigung

Einklappen
Keine Ankündigung bisher.

LOAD DATA INFILE Formate anpassen für CSV-Import

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • LOAD DATA INFILE Formate anpassen für CSV-Import

    Wenn der Import großer CSV-Dateien in eine MySQL-Datenbank als Aufgabe steht,
    dann kann dies mit LOAD DATA INFILE sehr schnell erledigt werden.
    Ärgerlich ist es nur, wenn das Datenformat in der CSV-Datei nicht den geforderten MYSQL-Format entspricht.
    Es muss hier nicht zwingend über PHP eine Formatwandlung durchgefürt werden.
    Dies kann in vielen Fällen schon beim Import in der LOAD DATA INFILE erfolgen.
    Für zwei Problemfälle soll dies hier gezeigt werden:
    - Datum liegt in der CSV als dd.mm.YYYY HH:ii:ss vor
    - Float Zahlen haben ein Komma als Dezimaltrenner

    Unserer Mustertabelle liegt folgendes Create zugrunde:
    Code:
    CREATE TABLE tab (datum DATETIME , wert REAL)
    Die Datei csv2mysql.csv enthält folgende Zeilen:
    Code:
    datum;wert
    01.02.2012 06:07:00;4,5
    21.12.2014 05:34:30;6,7
    25.11.2014 06:34:00;1,7
    Mit der folgenden SQL Anweisung wird beim CSV-Import sowohl das Datum
    als auch der Wert (REAL) in ein für MYSQL passendes Format konvertiert.

    Code:
     LOAD DATA INFILE 'csv2mysql.csv' 
     INTO TABLE `tab`
     FIELDS TERMINATED BY ';'
     OPTIONALLY ENCLOSED BY '\"'
     LINES TERMINATED BY '\n'
     IGNORE 1 LINES 
     (@datum, @wert) 
     SET `datum` = STR_TO_DATE(@datum,'%d.%m.%Y %H:%i:%s'), 
     `wert` = REPLACE(@wert,',','.')

    LG jspit
    PHP-Klassen auf github

Lädt...
X