Изменить поле CSV при импорте в MySQL - PullRequest
3 голосов
/ 15 октября 2010

Я пытаюсь импортировать файл CSV в базу данных mysql.

Файл CSV содержит (помимо прочего) даты в следующем формате:

"2010-04-31 17:43:12"

Мой первый подходдолжен был использовать следующий скрипт .sql:

USE test;
LOAD DATA INFILE '/tmp/test.cvs'
replace INTO TABLE test_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(...,mydate,...);

, который не работает, потому что двойные кавычки делают поле "2010-04-31 17:43:12" строкой.Итак, я понял, что могу преобразовать его в формат DATETIME, используя

select STR_TO_DATE("2010-04-31 17:43:12",'(%Y-%c-%e %H:%i:%S)') AS NewDateTime

. Этот запрос прекрасно работает сам по себе, но мне было интересно, есть ли способ преобразования строки на лету при импорте.Что-то из следующего:

...
LINES TERMINATED BY '\n'
(...,STR_TO_DATE(mydate,'(%Y-%c-%e %H:%i:%S)') AS NewDateTime,...);

1 Ответ

2 голосов
/ 15 октября 2010

Необходимо указать список столбцов, а затем использовать команду SET для применения STR_TO_DATE:

(@date,column2,column3,column4,column5,column6,)
SET mydate = STR_TO_DATE(@date, '%Y-%c-%e %H:%i:%S')

Связанный:

...