返回首页

gbase数据、南大通用产品文档:GBase8sIMCSERVER 环境变量

更新日期:2024年09月11日

IMCSERVER 环境变量指定了连接的相关信息所在 sqlhosts 文件中数据库服务器条
目的名称。
数据库服务器可以是本地或远程的。在支持 C shell 的 UNIX™ 系统上,可使用该命
令设置 IMCSERVER 环境变量。

dbservername 是数据库服务器的有效名称。

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 180 -
此处 dbservername 必须是 sqlhosts 文件中的数据库服务器的名称。有关使用
MaxConnect 的 sqlhosts 设置的更多信息,请参阅《GBase 8s 管理员指南》。除非
IMCSERVER 设置为有效的数据库服务器,否则不能使用 MaxConnect。

创建演示数据库
(SQL 管理 API)
随同 admin() 或 task() 函数,使用 create
dbaccessdemo 参数来创建 stores_demo 演
示数据库。
语法


GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 711 -

元素
描述
关键考虑
database_name
要创建的数据库名称。
缺省数据库名是 stores_demo。
dbspace
要在其中创建数据库
的 dbspace 名称。
缺省 dbspace 是 root dbspace。

用法
运行这个函数来创建 stores_demo 数据库。
使用 -log 选项来启用演示数据库的事务日志记录。
使用 -nots 选项来防止在演示数据库中创建带时间序列数据的表。
示例
下列命令在 root dbspace 中创建 stores_demo 数据库:
EXECUTE FUNCTION task("create dbaccessdemo");
下列命令在名为 dbs1 的 dbspace 中创建名为 demo2 的演示数据库。:
EXECUTE FUNCTION task("create dbaccessdemo","demo2","dbs1");
下列命令在名为 dbs1 的 dbspace 中创建带有事务日志记录的 stores_demo 数据库:
EXECUTE FUNCTION task("create dbaccessdemo","stores_demo","dbs1","-log");

语法格式
MERGE [INTO] [vc_name.][database_name.]table_name
USING table_reference
ON conditional_exp
[WHEN
MATCHED
THEN
UPDATE
SET
col_name1=expr1
[,
col_name2=expr2] ...
[WHEN NOT MATCHED THEN INSERT [(col_name3,...)] VALUES (expr3,...)]
使用MERGE 语法示例性语句如下:

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1057
MERGE INTO a
USING table_x b
ON (a.hash_col = b.hash_col)
WHEN MATCHED THEN UPDATE SET a.column = b.column,…
WHEN NOT MATCHED THEN INSERT (a.column,…) VALUES (b.column,…)
表5- 96 参数说明
参数名称


vc_name
vc 名,可选项。
database_name
数据库名,可选项。
table_name
表名,必须是hash 分布表,不可以是视图,可以使用别名。
table_reference
table_reference 只允许是表,可以使用别名。
conditional_exp
关联条件为哈希表的哈系列的等值条件
column
列名

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1058
注意

UPDATE 部分不支持DELETE 子句。

UPDATE 部分和INSERT 部分不支持WHERE 子句。

UPDATE 部分和INSERT 部分可以省略,但不可以同时省略,否则报语法
错误。

UPDATE 部分和INSERT 部分位置不可以颠倒。

INSERT 的VALUES 部分不允许使用MERGE 表。

UPDATE 或INSERT 中的列如果出现多次,不会报错,后指定的列生效,
但建议不要依赖于该行为,避免这样使用。

不允许一对多更新:如果MERGE 表中的一行与USING 表中的多行符合
连接条件,则报错。

MERGE INTO a 语句中,a 表必须是哈希分布表。

USING table_x b ON (a.hash_col = b.hash_col)这部分中包含JOIN 条件语
句,
JOIN 条件中必须存在a 表哈希分布列的等值关联条件,
且该关联条件
下,哈希分布列必须是物理列的关联,不能是表达式、函数。
例如:
a.hash_col = b.hash_col(合法)
ABS(a.hash_col) = b.hash_col(不合法)
a.hash_col = ABS(b.hash_col)(不合法),这个不合法是因为当前集群哈
希重分布的限制,JOIN 时均是以物理列进行哈希重分布。

WHEN MATCHED THEN UPDATE SET a.column = b.column, …语句中,
set 列(a.column)不能是hash 分布列。

WHEN
NOT
MATCHED
THEN
INSERT
(a.column, … )
VALUES
(b.column,…)语句中,
INSERT 的字段列表中,
a.column 必须出现哈希分布
列,且VALUES 中对应的列中,b.column 必须是哈希分布列,或者是经过
动态哈希重分布后的哈希分布列。

如果a 表和b 表之间JOIN 关系不是静态哈希分布JOIN 关系,则
gcluster_hash_redistribute_join_optimize 参数不能被关闭。

参与MERGE 操作的表,如果有表的主分片处于locked 状态,则无法使用
哈希重分布,因此当上例中的a 与b 不是静态哈希JOIN 关系时,会导致
MERGE 无法执行。
示例
示例1:对t1 表进行MERGE 操作。
DROP TABLE IF EXISTS t1;

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1059
CREATE
TABLE
t1(i
int,vc
varchar(20),d
date,dc
decimal(20,3))
DISTRIBUTED BY ('i');
INSERT INTO t1 VALUES(1,'one','2013-02-03',11.21);
INSERT INTO t1 VALUES (2,'two','2013-04-03',12.21);
INSERT INTO t1 VALUES (3,'one2','2013-03-03',31.21);
INSERT INTO t1 VALUES (11,'one3','2013-08-03',41.21);
INSERT INTO t1 VALUES (14,'three','2013-07-22',161.218);
INSERT INTO t1 VALUES (33,'third','2013-09-04',11.216);
INSERT INTO t1 VALUES (5,'wto','2013-02-03',110.210);
INSERT INTO t1 VALUES (null,'first','2013-02-03',311.91);
INSERT INTO t1 VALUES (8,'five','2013-02-03',811.201);
DROP TABLE IF EXISTS t2;
CREATE
TABLE
t2(i
int,vc
varchar(20),d
date,dc
decimal(30,3))
DISTRIBUTED BY ('i');
INSERT INTO t2 VALUES (1,'one','2013-02-03',11.20);
INSERT INTO t2 VALUES (2,'two','2013-08-03',12.81);
INSERT INTO t2 VALUES (13,'one2','2013-09-03',31.01);
INSERT INTO t2 VALUES (110,'one3','2013-08-03',41.21);
INSERT INTO t2 VALUES (14,'three','2013-06-22',161.218);
INSERT INTO t2 VALUES (30,'third','2013-09-04',11.216);
gbase> SELECT * FROM t1 ORDER BY i;
+------+-------+------------+---------+
| i
| vc
| d
| dc
|
+------+-------+------------+---------+
|
1 | one
| 2013-02-03 |