- 【TiDB 版本】: V4.0.0
- 【问题描述】:
在TIDB的表中有BIT类型的字段,在用load data加载数据时BIT类型字段会出现‘true/false’值被null值取代的情况
一、情况描述:在TIDB和MySQL分别做测试,表结构和数据文件均一致
-
现有一张表bit_test,表结构下:
CREATE TABLEbit_test
(
id
int(11) DEFAULT NULL,
SdState
bit(1) DEFAULT NULL,
State
bit(1) DEFAULT NULL,
id2
int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin -
数据文件内容如下:
二、执行操作与结果描述:
【TIDB】
- 执行load命令如下:
load data local infile ‘test.txt’ into table ods.bit_test fields terminated by ‘\t’ enclosed by ‘^’ lines terminated by ’
’ - insert命令如下:
insert into bit_test values (7,false,true,6)
insert into bit_test values (8,0,1,7) - 执行结果如下:
【MySQL】
- 执行load命令如下:
load data low_priority local infile ‘test.txt’ replace into table dm.bit_test fields terminated by ‘\t’ enclosed by ‘^’ lines terminated by ’
’ - insert命令如下:
insert into bit_test values (7,false,true,6)
insert into bit_test values (8,0,1,7)
3.执行结果如下:
【问题描述】:从上面测试来看,在tidb中,insert命令是可以把 ‘true/flase’ 转换为bit类型的 ‘1/0’ 来入表的,但是在使用load data时bit类型字段入表的数据均为null值。现在我们这边上游给的数据文件中bit类型字段对应的数据值为true / false,我们也是通过load data加载到TIDB的表中的,发现bit类型字段全为空值。麻烦请教下是有什么参数或者配置来设置bit类型的字段入表的规则吗