Если вы загружаете данные, используя синтаксис LOAD DATA INFILE
, у вас должна быть возможность обрабатывать конвертацию на лету.
Предполагая, что ваш исходный CSV-файл выглядит следующим образом:
StartDate, EndDate, Value
"1/10/2012 10:05", "1/11/2012 11:51", abc
"1/13/2012 08:00", "1/15/2012 09:01", abc
Вы можете определить столбцы StartDate
и EndDate
как datetime
тип данных и просто сделать:
LOAD DATA INFILE '/path/to/my/file.csv' INTO TABLE mytable
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n' -- or '\n'
IGNORE 1 LINES
(@StartDate, @EndDate, Value)
SET
StartDate = STR_TO_DATE(@StartDate, '%c/%e/%Y %k:%i'),
EndDate = STR_TO_DATE(@EndDate, '%c/%e/%Y %k:%i')
;
NB: и если вы в данный момент не используете LOAD DATA INFILE
..Я бы по-прежнему рекомендовал перенести ваш код для его использования.Это правильный способ сделать это в MySQL, он работает на всех клиентах .... и это очень быстро (см. эту ссылку ).