如何在 MySQL 中导入使用“NULL”关键字编码的日期时间字段?

How to import datetime field coded with `NULL` keyword in MySQL?

我有一个table如下图

请注意,我已经提到过这个 并且它不是重复的

当我尝试使用 MySQL workbench 上传 csv 文件中的数据时,我发现它忽略了 rows with NULL values for datetime field。这意味着它只复制第 2,4 和 5 行

请在下面找到错误信息

  • Row import failed with error: ("Incorrect datetime value: '' for column 'Date_entry' at row 1", 1292)

请注意Date_entry是一个索引列

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

Table定义是这样的:

Subject MEDIUMINT UNSIGNED NOT NULL,
Date_entry DATETIME,

在创建语句中,我有一行如下所示

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

你能帮我解决这个错误吗?

CREATE TABLE dummy (
Subject MEDIUMINT UNSIGNED NOT NULL,
Date_entry DATETIME NULL DEFAULT NULL,
)

在MySQL版本>=8.0中默认[=​​11=]是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;

注意: 确保 Date_entry 列上的 csv 格式与 MySQL 一样,顺便说一句,在你的 csv 中是不是数据库格式。我已经在 MySQL Workbench.

中测试了上述情况