MYSQL LOAD DATA导入数据时对于“空值”处理异常。
问题背景如下:
目标数据库表字段定义:
CREATE TABLE `TABLE_NAME` (
`f1` varchar(25) default NULL,
`f2` varchar(20) default NULL,
`f3` double(15,0) default -1,
`f4` varchar(20) default NULL,
`f5` double(15,3) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
源文件内容:【文件名:example_data1.txt】
cat;red;2.0;tree
用面命令可以成功导入数据到表中:
load data infile 'D:\\my_program\\Tek_sig\\example_data1.txt'
into table TABLE_NAME
FIELDS TERMINATED BY ';'
OPTIONALLY ENCLOSED BY ''
LINES TERMINATED BY '\n'
(f1,f2,f3)
结果OK:
Query OK, 1 rows affected (210 ms)
“空值”导入问题:
但是将源文件内容改为:
cat;red;;tree 【即将‘2.0’数值删除,即f3字段为空了】
再次用上面的LOAD DATA 命令导入,则系统报错:
Data truncated for column 'f3' at row 1
这是为什么?我在数据库表的字段“f3”的定义中不是可以为空吗(`f3` double(15,0) default -1,)?而且DEFAULT值为-1,难道不起作用吗?我想实现的效果是,如果在源文件中的f3字段没有值,则导入数据后f3字段的内空应为“-1”。
谁能帮我分析一下,能否实现这一功能需求?
多谢!