Mariadb 加载数据填充。。。SET column=NULL如果(column,';NULL';)获取不正确的值错误
在MariaDB-10.2.7上,使用表格模式: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
创建表项(
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')