SET:指定列值加载,加载系统将待加载文件和指定加载列值加载到集群系统的表中。输入的类型应为常量,包括字符串、整数值、浮点值和 NULL。
- 支持指定所有列类型加载值;
- 指定列值为常量值(包括 NULL),包括字符串(单引号包围)、十进制数值( 10)、浮点值( 10.9)、 NULL、 16 进制表示的字符串( 0xbac3)、科学计数法( 10e4);
- 支持多列同时指定加载值。最多可 SET 表列数-1 ,如果设置的列数与表定义中的列数一致将报错: Specified all fields;
- 支持 format=3、 format=4 以及 format=5
使用限制说明:
- 输入除常量值外的其他值,如列名、表达式等会报错,报错信息为 Column’addr’ should be const value;
- 指定的列不能存在于 TABLE_FIELDS 中,否则报错;
- 如果没有指定 AUTOFILL,指定值的列数+数据中列数之和必须等于表定义或者 TABLE_FIELDS (若指定了 TABLE_FIELDS)中的列数,否则会产生错误数据;如果指定了 AUTOFILL, 则可以小于表定义的列数,缺少的列会自动补全。如果 TABLE_FIELDS 列数+SET 列数小于表定义的列数,能够正常加载,没有涉及的列按照 default 值补齐;
- 同一列在 SQL 中不能重复指定,否则报错;
加载示例
建表语句
CREATE TABLE "t" ("a" varchar(10) DEFAULT NULL, "b" int(11) DEFAULT NULL, "c" datetime
DEFAULT NULL, "d" varchar(10) DEFAULT NULL, "e" decimal(10,2) DEFAULT NULL );
数据文件
Hello|01
Good|02
Better|03
加载过程
gbase> Load data infile 'data.tbl' into table t fields terminated by '|' set
c='2016-06-06 18:08:08',d='default',e=20.6;
Query OK, 3 rows affected
Task 2920 finished, Loaded 3 records, Skipped 0 records
查询入库数据
gbase> select * from t;
+--------+------+---------------------------------+---------+-------+
| a | b | c | d | e |
+--------+------+----------------------------------+---------+-------+
| Hello | 1 | 2016-06-06 18:08:08 | default | 20.60 |
| Good | 2 | 2016-06-06 18:08:08 | default | 20.60 |
| Better | 3 | 2016-06-06 18:08:08 | default | 20.60 |
+--------+------+------------------------------------+---------+-------+
5 rows in set