返回首页

gbase数据、南大通用产品文档:GBase8a动态分区INSERT

更新日期:2024年09月11日

HIVE 引擎的分区表,
在INSERT 时仅指定各分区字段的名字,
分区值则由VALUES
子句或SELECT 子句来决定。
示例:动态分区INSERT
gbase> DROP TABLE IF EXISTS h3;
Query OK, 0 rows affected

gbase> CREATE TABLE h3(a INT, b INT) PARTITIONED BY (c INT, d INT) ENGINE='HIVE';
Query OK, 0 rows affected

gbase> INSERT INTO h3 PARTITION(c, d) values(1, 1, 100, 100);
Query OK, 1 row affected

gbase> INSERT INTO h3 PARTITION(c, d) values(2, 2, 200, 200);
Query OK, 1 row affected

gbase> SELECT * FROM h3 WHERE c > 0;
+------+------+------+------+
| a | b | c | d |
+------+------+------+------+
| 1 | 1 | 100 | 100 |
| 2 | 2 | 200 | 200 |
+------+------+------+------+
2 rows in set

gbase> DROP TABLE IF EXISTS h4;
Query OK, 0 rows affected

gbase> CREATE TABLE h4(a INT, b INT, c INT, d INT) ENGINE='HIVE';

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 758
Query OK, 0 rows affected

gbase> INSERT INTO h4 VALUES(3, 3, 200, 100);
Query OK, 1 row affected

gbase> INSERT INTO h4 VALUES(4, 4, 300, 300);
Query OK, 1 row affected

gbase> INSERT INTO h3 PARTITION(c, d) SELECT a, b, c, d FROM h4;
Query OK

gbase> SELECT * FROM h3 WHERE d > 0;
+------+------+------+------+
| a | b | c | d |
+------+------+------+------+
| 1 | 1 | 100 | 100 |
| 3 | 3 | 200 | 100 |
| 2 | 2 | 200 | 200 |
| 4 | 4 | 300 | 300 |
+------+------+------+------+
4 rows in set

-- 动态分区也可混合静态分区使用。
gbase> TRUNCATE TABLE h3;
Query OK

-- 下面这条插入语句,分区列c 使用静态分区(值为100),
-- 分区列d 使用动态分区(值为VALUES 中的200 和300)
gbase> INSERT INTO h3 PARTITION(c=100, d) values(1, 1, 200),(2, 2, 300);
Query OK, 1 row affected

gbase> SELECT * FROM h3 WHERE c > 0;
+------+------+------+------+
| a | b | c | d |
+------+------+------+------+
| 1 | 1 | 100 | 200 |
| 2 | 2 | 100 | 300 |
+------+------+------+------+
2 rows in set

-- 注意,不能出现父分区为动态,而子分区为静态的情况。
gbase> INSERT INTO h3 PARTITION(c, d=1000) values(1, 1, 200),(2, 2, 300);
ERROR ... Dynamic partition cannot be the parent of a static partition '1000'


GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 759

参数说明:就地升级过程中使用,用于标示升级前数据库的内部版本号,
此参数禁止手
动修改。
取值范围:非负整型。修改后需要重启cm_agent 才能生效。参数修改请参考表GUC
参数设置方式进行设置。
默认值:0

事件调度器event_scheduler 负责调用事件,它默认是打开的。这个调度器不断地
监视一个事件是否要调用,要创建事件,必须打开调度器。
gbase> SHOW VARIABLES LIKE '%event_scheduler%';
+-----------------+-------+
| Variable_name
| Value |
+-----------------+-------+
| event_scheduler | ON
|
+-----------------+-------+
1 row in set (Elapsed: 00:00:00.00)