Как импортировать поле даты и времени, закодированное с ключевым словом `NULL` в MySQL? - PullRequest
1 голос
/ 30 октября 2019

У меня есть таблица, как показано ниже

enter image description here

Обратите внимание, что я уже отослал эту публикацию , и она не повторяется

Когда я пытаюсь загрузить данные в CSV-файл с помощью MySQL, я вижу, что он игнорирует rows with NULL values for datetime field. Это означает, что копируются только строки 2,4 и 5

Ниже приведено сообщение об ошибке

  • Не удалось импортировать строку с ошибкой: ("Неверное значение даты и времени: '' для столбца'Date_entry' в строке 1 ", 1292)

Обратите внимание, что Date_entry является столбцом индекса

alter table dummy
      add index ADMISSIONS_IDX01 (Subject),
      add index ADMISSIONS_IDX02 (Date_entry);

Определение Tbale такое же, как показано ниже

Subject MEDIUMINT UNSIGNED NOT NULL,
Date_entry DATETIME,

В операторе создания у меня есть строка, подобная показанной ниже

Date_entry= IF(@Date_entry='', NULL, @Date_entry),

Можете ли вы помочь мне исправить эту ошибку?

Ответы [ 2 ]

2 голосов
/ 30 октября 2019
CREATE TABLE dummy (
Subject MEDIUMINT UNSIGNED NOT NULL,
Date_entry DATETIME NULL DEFAULT NULL,
)
1 голос
/ 30 октября 2019

В версии MySQL> = 8.0 по умолчанию local_infile равно off. Для загрузки вам необходимо сначала включить его.

set global local_infile = on;

load data local infile 'E:so.csv' into table dummy
fields terminated by ','
ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(Subject,@Date_entry)
set Date_entry=if(@Date_entry='',null, @Date_entry) ;

Он вставит данные. Если выдает ошибку, то поделитесь результатом sql_mode.

select @@sql_mode;

Примечание: Убедитесь, что в столбце csv в Date_entry указано yyyy-mm-dd hh:mm:ssформат, как MySQL, кстати, в вашем CSV это не в формате БД. Я проверил вышеупомянутый случай в MySQL Workbench.

...