Mariadb 加载数据填充。。。SET column=NULL如果(column,';NULL';)获取不正确的值错误

Mariadb 加载数据填充。。。SET column=NULL如果(column,';NULL';)获取不正确的值错误,mariadb,Mariadb,在MariaDB-10.2.7上,使用表格模式: 创建表项( id BIGINT(20)不为空, 时间戳为空时已删除\u )引擎=innodb; 查询: 加载数据填充'/items.csv' 放入表项中 设置deleted_at=NULLIF(deleted_at'NULL'); items.csv(以选项卡分隔): 结果是: ERROR 1292 (22007): Incorrect datetime value: 'NULL' for column 'deleted_at' at row

在MariaDB-10.2.7上,使用表格模式:

创建表项(
id BIGINT(20)不为空,
时间戳为空时已删除\u
)引擎=innodb;
查询:

加载数据填充'/items.csv'
放入表项中
设置deleted_at=NULLIF(deleted_at'NULL');
items.csv(以选项卡分隔):

结果是:

ERROR 1292 (22007): Incorrect datetime value: 'NULL' for column 'deleted_at' at row 1
在CSV中,在处删除的部分为
NULL
字符串(不是
\N
)。我想在运行
LOAD DATA

SET sql\u mode=''时将其转换为NULL;
解决了这个错误。MariaDB>=10.2.4引入了
STRICT\u TRANS\u TABLES
作为默认sql\u模式,并使
'NULL'
(字符串)对于时间戳无效,因此
处的
删除\u将永远不会
'NULL'


sql\u mode=''
不会引发错误,因此
NULLIF(在'NULL'处删除)
的工作方式与items.csv第一行中的
NULLIF('NULL','NULL')
的工作方式类似,正如我错误预期的那样。

我认为您需要分两步完成:

LOAD DATA ...
    (col1, col2, @deleted_at, col4)
    SET deleted_at = NULLIF(@deleted_at, 'NULL')

这个
集合的意图是什么?
?我已经更新了描述以使其更清晰。我的意图是将
NULL
转换为字符串
NULL
是一个“NULL”。
LOAD DATA ...
    (col1, col2, @deleted_at, col4)
    SET deleted_at = NULLIF(@deleted_at, 'NULL')