Как изменить дату строки на формат даты MySQL во время импорта CSV с использованием MySQL LOAD DATA LOCAL INFILE
Я использую инструкцию MySQL LOAD DATA LOCAL INFILE SQL для загрузки данных из файла CSV в существующую таблицу базы данных.
Вот пример инструкции SQL:
LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE my_table
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(name, address, dateOfBirth)
Третий столбец CSV, который отображается в поле dateOfBirth, в настоящее время имеет дату в следующем формате:
14-Feb-10
Как я могу изменить приведенный выше оператор SQL для форматирования даты в формате даты MySQL, т.е. 2010-02-14
?
Я знаю, как преобразовать дату строки при использовании обычного синтаксиса INSERT, используя:
STR_TO_DATE('14-Feb-10', '%d-%b-%y')
Ответы
Ответ 1
Вам нужно использовать предложение SET
вместе с переменной для ссылки на содержимое строки в этом столбце. В списке столбцов вы назначаете свой столбец даты имени переменной. Затем вы можете использовать его в своем выражении SET
. (Заметьте, у меня нет MySQL передо мной, чтобы проверить это.)
LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE my_table
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(name, address, @var1)
set dateOfBirth = STR_TO_DATE(@var1, '%d-%b-%y')
См. примеры пути вниз по странице: http://mysql2.mirrors-r-us.net/doc/refman/5.1/en/load-data.html (Не знаю, почему эта страница, похоже, отличается от основной документации тем, что она фактически содержит пример использования SET
.)
Ответ 2
Несколько более длительный процесс, который дает вам немного гибкости тестирования:
- Используйте столбец VARCHAR (64), например, вызываемый. mydate_text, чтобы сохранить неформатированную дату, которую вы импортируете.
- Загрузите/импортируйте таблицу, помещая дату в это текстовое поле.
-
Запустите запрос, например
UPDATE mytable SET mydate = STR_TO_DATE (mydate_text, '% Y-% b-% d')
-
Если все выглядит нормально, оставьте столбец mydate_text
- Если это не так, попробуйте еще раз с новым форматом.
Преимущество этого метода заключается в том, что он позволяет вам играть с форматами без необходимости повторного импорта таблицы с использованием довольно суетливого синтаксиса MySQL LOAD DATA, особенно с колонками столбцов длины. Если вы точно знаете, что вы делаете, то ответ выше. Если вы не являетесь экспертом в MySQL, этот метод может быть полезен, пока вы не получите правильные форматы.