Das Datum in Ihrer Datendatei ist bereits in einem Format, das MySQL von Haus aus verstehen sollte. Es ist nur in doppelte Anführungszeichen eingeschlossen. Sie müssen LOAD DATA INFILE
mitteilen wie man mit den Anführungszeichen umgeht. Probieren Sie so etwas aus:
LOAD DATA LOCAL INFILE 'myData.csv'
INTO TABLE equity_last_import
FIELDS OPTIONALLY ENCLOSED BY '"' TERMINATED BY ','
LINES TERMINATED BY '\n'
(equity,last,last_date)
Aktualisierung:
Da Sie gesagt haben, dass es nicht funktioniert, habe ich eine Testtabelle erstellt und überprüft, ob es funktioniert. Hier ist der Beweis:
Ich habe Ihre CSV-Daten aus der Frage hervorgehoben und in eine neue Datei namens myData.csv
eingefügt in /tmp
meines Systems Mappe. Dann habe ich mich mit der mysql-Konsole verbunden und zu test
gewechselt Datenbank und führte Folgendes aus:
mysql> create table equity_last_import (equity int, last decimal(10,2), last_date datetime) engine=innodb;
Query OK, 0 rows affected (0.02 sec)
mysql> LOAD DATA LOCAL INFILE '/tmp/myData.csv'
-> INTO TABLE equity_last_import
-> FIELDS OPTIONALLY ENCLOSED BY '"' TERMINATED BY ','
-> LINES TERMINATED BY '\n'
-> (equity,last,last_date);
Query OK, 10 rows affected (0.00 sec)
Records: 10 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select * from equity_last_import;
+--------+--------+---------------------+
| equity | last | last_date |
+--------+--------+---------------------+
| 4108 | 48.74 | 2013-09-16 16:15:04 |
| 4249 | 8.10 | 2013-09-16 16:15:04 |
| 4197 | 3.81 | 2013-09-16 17:20:00 |
| 4139 | 26.81 | 2013-09-16 16:15:04 |
| 4218 | 24.83 | 2013-09-16 17:20:00 |
| 4260 | 79.72 | 2013-09-16 16:15:04 |
| 4270 | 450.12 | 2013-09-16 17:20:00 |
| 4242 | 30.38 | 2013-09-16 16:15:04 |
| 4193 | 1.42 | 2013-09-16 16:15:04 |
| 4134 | 3.77 | 2013-09-16 16:15:04 |
+--------+--------+---------------------+
10 rows in set (0.00 sec)
Sehen? Es funktioniert perfekt.
Noch ein Update:
Sie haben angegeben, dass Sie jetzt die folgende Fehlermeldung erhalten:
Out of range value for column 'last_date' at row 1
Hat Ihre CSV-Datei einen Header? Wenn dies der Fall ist, möchten Sie vielleicht IGNORE 1 LINES
hinzufügen zu Ihrem LOAD DATA INFILE
Befehl, um MySQL anzuweisen, den Header zu überspringen.