版本为:5.7.25-TiDB-v3.0.5
问题描述:load data 语法 set部分不生效,与mysql结果不一致
问题重现步骤:
1、创建一个表 CREATE TABLE shop_info(shop_id VARCHAR(50),shop_name VARCHAR(50),create_time DATETIME,shop_no INT,shop_level VARCHAR(50));
2、准备一个data文本文件,按表字段顺序填充了数据。其中shop_level列有部分数据为null,在文本中是一个空串。文件路径为 F:/data/member_info_partition/shop.dat
shop001 北京店 2019-08-05 04:08:18 1 s1
shop002 沈阳店 2019-08-05 14:08:59 2 a1
shop003 绍兴店 2019-08-05 14:08:50 3
shop004 新乡店 2019-08-07 11:08:19 4
shop005 济宁店 2019-08-05 14:08:06 5
3、使用load data语法导入上面的文本数据
LOAD DATA LOCAL INFILE ‘F:/data/member_info_partition/shop.dat’ INTO TABLE shop_info FIELDS TERMINATED BY ‘\t’ LINES TERMINATED BY ‘\r\ ’ (shop_id,shop_name,create_time,shop_no,@shop_level) SET shop_level=NULLIF(@shop_level,’’)
4、预期结果
数据全部正确插入表中,并且shop_level列无数据部分存储为null。
5、实际测试结果
在mysql上得到预期结果; 但是在tidb上,感觉set语句出现了bug,导致shop_level列全部存储为了null,丢失了数据。
不知道tidb4.0解决了这个问题没有?