2015-01-15 64 views
0

我必須用有趣的日期格式將csv導入到mysql數據庫中,所以我決定使用STR_TO_Date()來轉換它,但是當我嘗試時它會在第二次轉換時產生錯誤爲日期進行多次轉換。用多種自定義日期格式導入csv mysql

LOAD DATA LOCAL INFILE 'e:/the.csv' INTO TABLE data FIELDS OPTIONALLY ENCLOSED BY '"' TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 ROWS (ID, UID, Barcode, Name, @Start, @End, Seconds) SET Start = STR_TO_DATE(@Start, '%d/%c/%Y %H:%i') SET End = STR_TO_DATE(@End, '%d/%c/%Y %H:%i')

我的數據庫的線沿線的樣子:

ID UID  Barcode Name  Start    End     Seconds 
29 12345 BBB6168 namehere 09/12/2014 18:00 09/12/2014 18:09 538 
30 12345 AAA6168 namehere 10/12/2014 11:01 10/12/2014 11:02 4 
31 AAAAA ABC6084 namehere 10/12/2014 11:34 10/12/2014 11:34 5 

我怎樣才能解決這個問題?

+1

我會導入數據作爲字符串('varchar'),並將其轉換爲所需的格式已經導入它 – Barranka

+0

你能不能舉個例子Barranka後?非常感謝 – ChiMo

回答

2

正如Barranka提到的,它可能最好導入到字符串(varchar)列表中,然後在最終表中運行插入。

LOAD DATA LOCAL INFILE 'e:/the.csv' 
INTO TABLE data_temp_strings 
FIELDS OPTIONALLY ENCLOSED BY '"' TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
IGNORE 1 ROWS 
(ID, UID, Barcode, Name, StartStr, EndStr, Seconds); 


INSERT INTO data (ID,UID,Barcode,Name,Start,End,Seconds) 
SELECT ID, 
     UID, 
     Barcode, 
     Name, 
     STR_TO_DATE(StartStr, '%d/%c/%Y %H:%i'), 
     STR_TO_DATE(EndStr, '%d/%c/%Y %H:%i'), 
     Seconds 
FROM data_temp_strings;