Как преобразовать строку в формат даты и времени Mysql
У меня есть этот файл CSV:
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
и я пытаюсь загрузить его, используя локальные данные загрузки данных, но в столбце времени я получаю только значение 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')
;
2 ответа
Решение
Это синтаксис, который вы должны использовать:
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
в первом столбце.
Попробуй это
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),'-'),''))