我有一个如下所示的表
[请注意,我已经引用了此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版本> = 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;
注意:确保Date_entry
列上的csv像MySQL一样是yyyy-mm-dd hh:mm:ss
格式,顺便说一句,csv中不是db格式。我已经在MySQL Workbench中测试了上述情况。
CREATE TABLE dummy (
Subject MEDIUMINT UNSIGNED NOT NULL,
Date_entry DATETIME NULL DEFAULT NULL,
)