MySQL Workbench - Мастер импорта табличных данных, записывающий все объекты datetime как 0000-00-00 00:00:00 - PullRequest
1 голос
/ 18 июня 2020

Я использую MySQL Workbench 8.0 поверх сервера MariaDB ('10.1.37-MariaDB').

Я пытаюсь использовать Мастер импорта данных таблицы , чтобы импортировать 3 примера значений в таблицу. Вот пример того, как выглядит CSV:

emp_id,Event,Event_start_time,Event_end_time,
example,shift,"2020/11/6 0:00:00","6/11/2020 23:59",
example,lunch,"2020/14/06 13:00:00","2020/14/06 13:30:00",
example,break,"2020/14/06 10:10:00","2020/14/06 10:30:00",

Во время импорта каждое значение отображается правильно, за исключением полей Datetime (Event_start_time, Event_end_time), которые отображаются как '0000-00-00 00:00:00' после выполнения оператора select.

Я пробовал следующие форматы, и, похоже, ни один из них не работает:

  • "2020/11/6 0:00:00"
  • 2020/11/6 0:00:00
  • 2020/11/06 00:00:00
  • 2020-11-06 00:00:00

Успешным оказался следующий случай:

  • 2020-11-06 0:00

Но мне нужно иметь возможность включать секунды для бизнес-логи c.

Еще хуже, когда я экспортирую свою таблицу (с существующими значениями Datetime) в .csv с помощью того же мастера, а затем попробуйте повторно импортировать, все значения загружаются как '0000-00-00 00:00:00'. Поскольку я разрабатываю решение для кого-то другого, , я хотел бы минимизировать / избежать MySQL сценариев, насколько это возможно. Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 18 июня 2020

Ваши даты отображаются в формате YYYY/DD/MM HH:MI:SS, что недопустимо с точки зрения MySQL. Вам нужно будет преобразовать их в формат YYYY-MM-DD HH:MI:SS, чтобы база данных могла их правильно распознать.

Если у вас есть данные в файле CSV, простой вариант - LOAD DATA INFILE синтаксис с предварительной обработкой ввода. На основе демонстрационных данных, которые вы показываете, это должно выглядеть так:

load data infile 'myfile.csv'
into mytable (emp_id, event, @event_start_time, @event_end_time)
fields terminated by ',' optionally enclosed by '"'
ignore 1 lines
set 
    event_start_time = str_to_date(@event_start_time, '%Y/%d/%m %H:%i:%s'),
    event_end_time   = str_to_date(@event_end_time,   '%Y/%d/%m %H:%i:%s')

Возможно, вам потребуется настроить параметры выписки - и, возможно, формат целевой даты - в соответствии с вашим фактическим использованием acse.

0 голосов
/ 22 июня 2020

Я неправильно написал значения.

2020-11-06 0:00:00 (Y-M-D) равно правильно . 2020-14-06 0:00:00 (Y-D-M) равно неверно .

...