加载时,有时需要临时增加一列数据文件中不存在数据,如账期数据,且一批数据都是同样的值,就可以使用指定列值加载功能。用户可在加载语句中指定SET参数进行指定列值加载,具体语法如下:
LOAD DATA INFILE 'file_list'
INTO TABLE [dbname.]tbl_name
[options]
options:
... ...
[SET (col_name = value[, …])]
SET语法可以指定某些列的值,设定值只能是常量,包括字符串、整数值、浮点值和NULL。
1) 支持指定所有列类型加载值;
2) 指定列值为常量值(包括 NULL),包括字符串(单引号包围)、十进制数值(10)、浮点值(10.9)、NULL、16 进制表示的字符串(0xbac3)、科学计数法(10e4);
3) 支持多列同时指定加载值。最多可 SET 表列数-1,如果设置的列数与表定义中的列数一致将报错:Specified all fields;
4) 支持 format=3、format=4 以及 format=5;
eg:
表结构如下:
CREATE TABLE tb("a"varchar(10)DEFAULT NULL,
"b" int(11) DEFAULT NULL,
"c" datetime DEFAULT NULL,
"d"varchar(10) DEFAULT NULL,
"e"decimal(102)DEFAULT NULL);
数据文件内容如下:
Hello|01
Good|02
Better|03
指定列加载:
gbase>load data infile ’ ftp://gbase+gbase@192.168.182.134/data tbl’ into table llc.tb fielo set c=’ 2016-12-15 18:08:08’ ,d=’ default’ ,e=20.6;
Query OK, 3 rows affected(Elapzed: 00:00:00.47)
Task 131091 finished, Loaded 3 records, Skipped O records
查看表数据:
gbase>select * from tb;
+--------+------+---------------------+---------+-------+
| a | b | c | d | e |
+--------+------+---------------------+---------+-------+
| Better | 3 | 2016-12-15 18:08:08 | default | 20.60 |
| Hello | 1 | 2016-12-15 18:08:08 | default | 20.60 |
| Good | 2 | 2016-12-15 18:08:08 | default | 20.60 |
+--------+------+---------------------+---------+-------+
3 rows in set (Elapsed:00:00:00.02)
使用限制说明:
1) 输入除常量值外的其他值,如列名、表达式等会报错,报错信息为 Column 'addr' should be const value;
2) 指定的列不能存在于 TABLE_FIELDS 中,否则报错;
3) 如果没有指定 AUTOFILL,指定值的列数+数据中列数之和必须等于表定义或者TABLE_FIELDS (若指定了 TABLE_FIELDS)中的列数,否则会产生错误数据;如果指定了 AUTOFILL,则可以小于表定义的列数,缺少的列会自动补全。如果 TABLE_FIELDS 列数+SET 列数小于表定义的列数,能够正常加载,没有涉及的列按照 default 值补齐;
4) 同一列在 SQL 中不能重复指定,否则报错。




