Mysql
 sql >> Base de données >  >> RDS >> Mysql

Importation CSV MySQL :valeur datetime

La date de votre fichier de données est déjà dans un format que MySQL devrait comprendre en natif. Il est juste entouré de guillemets doubles. Vous devez indiquer LOAD DATA INFILE comment traiter les citations. Essayez quelque chose comme ceci :

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)

Mise à jour :

Puisque vous avez dit que cela ne fonctionnait pas, j'ai créé une table de test et vérifié que cela fonctionnait. En voici la preuve :

J'ai mis en évidence vos données csv de la question et collées dans un nouveau fichier appelé myData.csv dans le /tmp de mon système dossier. Ensuite, je me suis connecté à la console mysql, je suis passé au test base de données et a exécuté ce qui suit :

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)

Voir? Cela fonctionne parfaitement.

Une autre mise à jour :

Vous avez indiqué que vous obtenez l'erreur suivante :

Out of range value for column 'last_date' at row 1

Votre fichier CSV a-t-il un en-tête ? Si c'est le cas, vous pouvez ajouter IGNORE 1 LINES à votre LOAD DATA INFILE commande pour indiquer à MySQL d'ignorer l'en-tête.