LOAD DATA INFILE von DATETIMES

Wenn die Datumswerte in der .csv nicht gerade zufällig im MySQL-Format vorliegen, kann ein INSERT INTO INFILE diese Daten nicht richtig in die entsprechende Spalte laden und sie werden auf 0 gesetzt.

1. Schritt: richtiges Datumsformat finden

In einer .csv Datei liegt alles nur als Text vor. Dieser Text muss nun erstmal in ein Datum verwandelt werden. Dies geschieht mit der 
STR_TO_DATE()-Funktion. Um das richtige Format zu finden, kann man nun das Datum im .csv kopieren und hier einfügen. Anschließend fummelt man so lange an dem Format, bis die Konvertierung gelingt. Das sieht dann beispielsweise so aus:

2. Schritt: richtig in INSERT INTO FILE einbauen

Leider ist es in INSERT INTO FILE nicht ganz elegant gelöst, einen Import durchzuführen, wenn die Spalten in der .csv von den Spalten in der MySQL-Tabelle abweichen. So müssen erstmal alle Spalten mit Namen in der entsprechenden Reihenfolge aufgeführt werden, also z.B. 

LOAD DATA INFILE 'C:/projects.csv'
INTO TABLE t_remote             
FIELDS TERMINATED BY ';' 
LINES TERMINATED BY '\n' 
IGNORE 1 LINES
(id, coid, comp, ptitle, ptime, ptime2, pother, parea, pdesc, purl, pextid, @created, pcity)
SET created = STR_TO_DATE(@created, '%d.%m.%Y %H:%i')
;