#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.