Даты Excel не могут быть преобразованы в желаемый формат

#mysql #csv #date #formatting

#mysql #csv #Дата #форматирование

Вопрос:

Я пытаюсь импортировать данные из файла .csv в MySQL с помощью:

 LOAD DATA LOW_PRIORITY LOCAL INFILE 'file_path_here' 
REPLACE INTO TABLE `pitch_data` 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY 'rn'
IGNORE 1 LINES
(id,AT_BAT_NUMBER,etc.,...,ZONE)
SET GAME_DATE = STR_TO_DATE(@GAME_DATE, '%m/%d/%Y')
;
 

но преобразование GAME_DATE из MM / DD / YYYY (в файле .csv) в требуемый формат, ГГГГ-ММ-ДД, не происходит (я получаю «Код ошибки: 1292. Неверное значение даты: ‘30.10.2019’ для столбца ‘GAME_DATE’ в строке 1» сообщение).

Я попытался изменить формат столбца GAME_DATE вручную в файле .xlsx для сохранения и копирования в файл .csv, но даже в файле .xlsx я не могу изменить формат. Как ни странно, когда я выбираю опцию «Формат ячеек», это указывает на то, что данные уже находятся в формате ГГГГ-ММ-ДД, но на глаз они отображаются как ММ / ДД / ГГГГ. Я пробовал аналогичный подход с помощью мастера «Текст в столбцы», но безуспешно.

Любая помощь будет оценена!

добавлен код из комментария:

Конечно. Вот подмножество .csv:

 id AT_BAT_NUMBER GAME_DATE 
1  79            10/30/2019 
2  79            10/30/2019
 

и код SQL:

 LOAD DATA LOW_PRIORITY LOCAL INFILE 'FILE_PATH_TO_CSV' 
REPLACE INTO 
TABLE pitch_data 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY 'rn' 
IGNORE 1 LINES 
(id,AT_BAT_NUMBER,GAME_DATE) 
SET GAME_DATE = STR_TO_DATE(@GAME_DATE, '%m/%d/%Y') 
 

Комментарии:

1. это должно сработать, но вы все равно должны создать [mr] образец csv и полный код для этого примера

Ответ №1:

сначала вы должны установить пользовательскую переменную следующим образом

 LOAD DATA LOW_PRIORITY LOCAL INFILE 'FILE_PATH_TO_CSV' 
REPLACE INTO 
TABLE pitch_data 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY 'rn' 
IGNORE 1 LINES 
(id,AT_BAT_NUMBER,@GAME_DATE) 
SET GAME_DATE = STR_TO_DATE(@GAME_DATE, '%m/%d/%Y') 
 

Комментарии:

1. УСПЕХ! Большое спасибо @nbk.