Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL CSV-Import:datetime-Wert

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.