Einlesen von Zeit-Daten in MySQL4.1

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
klaus
Beiträge: 102
Registriert: 09.06.2003 11:32:10

Einlesen von Zeit-Daten in MySQL4.1

Beitrag von klaus » 04.11.2005 10:34:10

Moin,

ich möchte mittels

Code: Alles auswählen

mysql> load data infile '/home/weizen/DB-weizenversuche/bannesdorf_versuch.csv' into table bestandeswetter fields terminated by ';' enclosed by '\"' lines terminated by '\r\n';
Daten in eine Datenbank einlesen, allerdings ist die Zeit in der csv-Datei einfach
als Integer (0-23) in Stunden angegeben. Daraus resultiert, dass die Stunden in MySQL
als Sekunden erkannt werden.

Code: Alles auswählen

| Bannesdorf | 2005-10-05 | 00:00:00 |  ...
| Bannesdorf | 2005-10-05 | 00:00:01 | ...
| Bannesdorf | 2005-10-05 | 00:00:02 |   ...
Kann ich den obigen Befehl so ändern, dass die Stunden auch als Stunden eingelesen werden?!
Ich hatte versucht TIME_FORMAT() zu verwenden, aber den Befehl wohl nicht richtig verstanden.

Vielen Dank
Matthias

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 04.11.2005 11:31:33

Und wenn du nach dem Einlesen einfach ein Update machst und die Sekundenwerte mal 3600 nimmst?
So wie ich das verstehe, hast ja in der einzulesenden Datei nur Stundenwerte oder?
Soweit ich das sehe, erwartet TIME_FORMAT aber eh String in einem gueltigen Zeitformat und wird dir hier nix bringen.

klaus
Beiträge: 102
Registriert: 09.06.2003 11:32:10

Beitrag von klaus » 04.11.2005 13:10:14

Vielen Dank,

aber mir schwebt eigentlich etwas wie "as hour()" vor,
also dass die Zahlen als Stunden erkannt werden.
Es soll also nur die dritte Spalte "formatiert " werden.

Matthias

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 05.11.2005 13:32:26

Du kannst ja auch sed drueberjagen bevor du das ganze importierst und das Format der 3. Spalte aendern.
Soweit ich das weiss, nimmt die Datenbank bei dem Befehl load data infile die Daten wie sie sind und ballert die in die entsprechenden Spalten. Und wenn eine halt als TIME formatiert ist, dann werden aus 23 halt die 00:00:23.
Also, entweder die Daten vorher aufbereiten, dass das passt oder z.B. in dem Fall diese eine Spalte nach dem Import mit nem Update auf Vordermann bringen, is ja nur ein Kommando dann so ala UPDATE meine_tabelle SET zeit=zeit*3600. Eventuell halt noch mit ner WHERE-Klausel ;)

Antworten