# Datei import und Datumsformat



## TheR (30. Mai 2012)

Hallo,

ich habe folgendes Problem:
Ich möchte eine CSV-Datei in eine MySQL-Tabelle importieren. Das mache ich mit


```
LOAD DATA INFILE...
```

Bevor ich den Import starte erstelle ich die entsprechende Tabelle. Das Problem ist; in der Datei gibt es eine Spalte Timestamp mit dem Format 09/Oct/2001:06:31:20 +0000. 

Beim Anlegen der Tabelle kann ich für die Timestamp-Spalte den Datentyp Date, Datetime, Timestamp, usw. verwenden es hilft nix. Die Tabelle wird gar nicht erst angelegt bzw. wenn ich den Import starte enthält die Spalte Timestamp den Wert 0000 00 000. 

Deshalb meine Frage wie bekomme ich es hin, dass oben genanntes Timestamp-Format akzeptiert bzw. beim Import automatisch umgewandelt wird.

mfg TheR


----------



## XHelp (30. Mai 2012)

Versuch mal sowas wie:

```
load data infile 'file.csv' into table tbl fields terminated by ',' (col1, col2, @dateValue, col3) set colWithDate = str_to_date(@dateValue, '%d/%b/%Y %T +0000');
```


----------



## TheR (30. Mai 2012)

Das hat wunderbar funktioniert vielen Dank! Ich habe aber noch eine Frage zum Verständnis: Was macht das @.


----------



## SlaterB (30. Mai 2012)

habe eben selber grob nachgelesen, unter
MySQL :: MySQL 5.1 Referenzhandbuch :: 13.2.5 LOAD DATA INFILE
auch nicht allzu deutlich (ab "Ferner müssen Sie eine Spaltenliste festlegen, wenn die Reihenfolge der Felder ..")

anscheinend ist hier der dritte von 4 Werten der CSV einer Variablen  @dateValue zugewiesen statt direkt in die DB, und wird dann weiter hinten zur Berechnung einer anderen Spalte verwendet..


----------



## XHelp (30. Mai 2012)

Ja, @-Sachen sind nur Benutzervariablen. Diese kann man auch verwenden um bestimmte Spalten aus der Datei einfach zu überspringen: man weißt die einer Variable zu mit der man nix macht.


----------

