2017-02-28 146 views
0

我有這個文件,CSV:如何字符串轉換爲日期時間格式的Mysql

20170117-00:00:6 3087A6B282A46C 124.191.134.139 2746 256 63628 
20170117-00:00:53 330391C9F58B5A 120.18.97.172 2746 257 43077 
20170117-00:02:27 3303CD14BD40C8 110.147.131.78 2746 256 63628 
20170117-00:02:00 3304B3CD448E4F 189.35.218.62 2746 255 43074 

,我試圖使用LOAD DATA LOCAL INFILE上傳,但我得到的時間列只Null值。在這裏有我的代碼(時間是表列名)

LOAD DATA LOCAL INFILE 'path.log' 
       INTO TABLE Clicks 
       CHARACTER SET latin1 
       FIELDS TERMINATED BY '\t' 

       ENCLOSED BY '"' 
       LINES TERMINATED BY '\n' 
       IGNORE 1 ROWS 

       SET Time= STR_TO_DATE(@Time,'%Y%m%d-%H:%i:%s') 
       ; 
+0

'20170117-00:00:6' ...是'6'一個錯字後失蹤的數字嗎? –

+0

我猜'IGNORE 1 ROWS'是忽視'6',它可能不是一個錯字 –

+0

是的它是一個錯字(20170117-00:00:16)。我省略了第一行。在文件中有與列名相關的行。 – Valerio

回答

0

這是你應該使用的語法:

LOAD DATA LOCAL INFILE 'path.log' 
INTO TABLE Clicks 
CHARACTER SET latin1 
FIELDS TERMINATED BY '\t' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
IGNORE 1 ROWS 
(@Time, column2, column3, column4, column5)   -- read time data into @Time 
SET column1 = STR_TO_DATE(@Time, '%Y%m%d-%H:%i:%s') -- then set column1 

我覺得@Time變量從未被設置成任何東西每條記錄都被讀取,因此您在第一列中獲得了NULL

+0

謝謝..它的工作原理! – Valerio

0

嘗試這個

LOAD DATA LOCAL INFILE 'path.log' 
       INTO TABLE Clicks 
       CHARACTER SET latin1 
       FIELDS TERMINATED BY '\t' 

       ENCLOSED BY '"' 
       LINES TERMINATED BY '\n' 
       IGNORE 1 ROWS 

       SET TIME= CONCAT(SUBSTRING(@Time,1,4),'-',SUBSTRING(@Time,5,2),'-',SUBSTRING(@Time,7,2),' ',REPLACE(@Time,CONCAT(SUBSTRING_INDEX(@Time, '-',1),'-'),'')) 
相關問題