如何字符串转换为日期时间格式的Mysql
问题描述:
我有这个文件,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')
;
答
这是你应该使用的语法:
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
答
尝试这个
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),'-'),''))
'20170117-00:00:6' ...是'6'一个错字后失踪的数字吗? –
我猜'IGNORE 1 ROWS'是忽视'6',它可能不是一个错字 –
是的它是一个错字(20170117-00:00:16)。我省略了第一行。在文件中有与列名相关的行。 – Valerio