【 使用环境 】测试环境
【 OB or 其他组件 】OceanBase
【 使用版本 】5.7.25-OceanBase_CE-v4.3.5.2 - Mysql租户
【问题描述】使用LOAD DATA语句导入文件数据,第一行最后一个字段如果为NULL会报列不匹配错误,无法导入
【复现路径】
建表语句:
CREATE TABLE test.load_test (
column1 varchar(10) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '字段1',
column2 varchar(100) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '字段2',
column3 text COLLATE utf8mb4_bin DEFAULT NULL COMMENT '字段3',
column4 decimal(20,2) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '字段4',
column5 varchar(10) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '字段5'
) COMMENT = '导入测试表';
有个test.txt文件,里面第一行数据最后一个字段为null,导入会报ERROR 1136 (21S01): Column count doesn’t match value count at row 1错误,数据以及命令如下:
aaa,bbb,ccc,1.1,
aaa,bbb,ccc,2.1,ddd
LOAD DATA /*+ direct(true,1) parallel(1) */ from files ( location = '/home/oceanbase/', format = ( type = 'csv', line_delimiter = '\n', field_delimiter = ',', parse_header = false, skip_blank_lines = true, EMPTY_FIELD_AS_NULL = true ), pattern = "test.txt" ) INTO TABLE test.load_test;
test1.txt文件第一行最后一个字段有值,后面的行无所谓,不会报错,数据以及命令如下:
aaa,bbb,ccc,2.1,ddd
aaa,bbb,ccc,1.1,
LOAD DATA /*+ direct(true,1) parallel(1) */ from files ( location = '/home/oceanbase/', format = ( type = 'csv', line_delimiter = '\n', field_delimiter = ',', parse_header = false, skip_blank_lines = true, EMPTY_FIELD_AS_NULL = true ), pattern = "test1.txt" ) INTO TABLE test.load_test;

