sql >> Database >  >> RDS >> Mysql

MySQL CSV-import:datetime-waarde

De datum in uw gegevensbestand heeft al een indeling die MySQL van nature zou moeten begrijpen. Het staat gewoon tussen dubbele aanhalingstekens. U moet LOAD DATA INFILE . vertellen hoe om te gaan met de offertes. Probeer zoiets als dit:

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)

Bijwerken:

Omdat je zei dat het niet werkt, heb ik een testtabel gemaakt en geverifieerd dat het wel werkt. Hier is het bewijs:

Ik heb uw csv-gegevens uit de vraag gemarkeerd en in een nieuw bestand met de naam myData.csv geplakt. in de /tmp . van mijn systeem map. Toen maakte ik verbinding met de mysql-console, schakelde over naar de test database en voerde het volgende uit:

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)

Zie je wel? Het werkt perfect.

Nog een update:

Je hebt aangegeven dat je nu de volgende foutmelding krijgt:

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

Heeft uw CSV-bestand een header? Als dat zo is, wil je misschien IGNORE 1 LINES . toevoegen naar uw LOAD DATA INFILE commando om MySQL te vertellen de koptekst over te slaan.



  1. Hoe te selecteren uit MySQL waar Tabelnaam Variabel is

  2. Problemen met GROUP_CONCAT en Longtext in MySQL

  3. Wat is de SQL-specifieke programmeertaalnaam van MySQL?

  4. Hoe SQLite Min() werkt