MySqlImport - импортировать поле даты не в правильном формате - PullRequest
1 голос
/ 17 января 2010

У меня есть CSV-файл с полем даты в формате, аналогичном (среди других полей):

17DEC2009

Когда я делаю mysqlimport, остальные поля импортируются правильно, но это поле остается 0000-00-00 00:00:00

Как правильно импортировать эту дату? Должен ли я сначала выполнить команду sed / awk для файла, чтобы преобразовать его в правильный формат? Если так, то на что это было бы похоже? Имеет ли значение тот факт, что вместо числа указан месяц?

Ответы [ 3 ]

5 голосов
/ 17 января 2010

STR_TO_DATE () позволяет преобразовать строку в соответствующую дату в запросе. Он ожидает строку даты и строку формата.

Проверьте примеры в ручном вводе, чтобы выяснить правильный формат.

Я думаю, что это должно быть в духе %d%b%Y (однако% b должен генерировать строки типа Dec вместо DEC, поэтому вам придется проверить, работает ли он).

1 голос
/ 05 декабря 2017

Вот подход, который я выбрал для решения аналогичной проблемы.Мой вариант использования был немного сложным с таким количеством столбцов, но здесь было легко представить решение.У меня есть таблица Persons с (Id int autogen, имя varchar (100), дата DOB), и несколько миллионов данных (имя, DOB) необходимо заполнить из файла CSV.

  1. Создан дополнительный столбецв таблице персон с именем вроде (varchar_DOB varchar (25)).
  2. Импортированные данные с помощью утилиты mysqlimport в столбцы (name, varchar_DOB).
  3. Выполненный запрос на обновление, обновивший столбец DOB с использованием str_to_date (varchar_DOB, 'format') function.
  4. Теперь я ожидал, что данные заполнены столбцом DOB.

Та же логика может быть применена при выполнении любого другого вида форматирования данных, такого как double, time_stampи т.д.

1 голос
/ 17 января 2010

У меня была эта проблема в прошлом. Мне нужно было использовать LOAD DATA и установить соответствующее выражение здесь -

[SET col_name = expr,...]

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...