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

问题描述 投票:1回答:2

我有一个如下所示的表

enter image description here

[请注意,我已经引用了此post,并且不是重复的]

[当我尝试使用MySQL工作台上载csv文件中的数据时,我能够看到它忽略了rows with NULL values for datetime field。表示仅复制第2、4和5行

请在下面找到错误消息

  • 行导入失败,出现错误:(“错误的日期时间值:行1的'Date_entry'的日期不正确”,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,

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

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

您能帮我解决此错误吗?

mysql mysql-workbench mysql-error-1064
2个回答
1
投票

默认情况下,在[MySQL版本> = 8.0中,local_infileoff。要加载,您需要先启用它。

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一样是yyyy-mm-dd hh:mm:ss格式,顺便说一句,csv中不是db格式。我已经在MySQL Workbench中测试了上述情况。


2
投票
CREATE TABLE dummy (
Subject MEDIUMINT UNSIGNED NOT NULL,
Date_entry DATETIME NULL DEFAULT NULL,
)
© www.soinside.com 2019 - 2024. All rights reserved.