返回首页

gbase数据、南大通用产品文档:GBase8s编译

更新日期:2024年09月11日

GCI 接口库的名称:libclntsh.so 或Libclntsh_gbase.so。
使用GCI 接口库进行应用程序编译时,需要设定LD_LIBARY_PATH 路径包含有:
l
GCI 接口库自身路径
l
$GBASEDBTDIR/lib/cli
l
$GBASEDBTDIR/lib/esql
l
$GBASEDBTDIR/lib
其中GBASEDBTDIR 是CSDK(或者odbc connector)安装路径。

语法格式
ALTER TABLE [[vc_name.]database_name.]table_name ADD

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1039
GROUPED_DEFINITION ;
GROUPED_DEFINITION:
GROUPED
[grouped_name](column_references)[COMPRESS(<’method’>,)]
表5- 87 参数说明
参数名称


vc_name
vc 名,可选项。
database_name
数据库名,可选项。
table_name
表名
GROUPED
关键字,表示定义的是行存列。
grouped_name
表示行存列的名称,可以指定行存列名称。如果
不指定名称,则默认为后面的column_references
中第一个列的名称,如果该名称重名,则在名称
后面加上“_#”(#为从2 开始的一个数字)。
column_references
行存列中包含的物理列的集合,各列间以“,”分
隔。
COMPRESS(<’method’>,)
为行存列指定压缩算法。具体用法参考压缩章节。
示例
示例1:建表时不创建行存列,使用ALTER TABLE 语句创建行存列。
gbase> DROP TABLE t2;
Query OK, 0 rows affected
gbase> CREATE TABLE t2(a int,b int,c int,d int);
Query OK, 0 rows affected
gbase> ALTER TABLE t2 ADD GROUPED (a,b,c);
Query OK, 0 rows affected
Records: 0
Duplicates: 0
Warnings: 0
gbase> SHOW CREATE TABLE t2 \G
*************************** 1. row ***************************
Table: t2
Create Table: CREATE TABLE "t2" (
"a" int(11) DEFAULT NULL,
"b" int(11) DEFAULT NULL,
"c" int(11) DEFAULT NULL,

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1040
"d" int(11) DEFAULT NULL,
GROUPED "a" ("a","b","c")
)
ENGINE=EXPRESS
DEFAULT
CHARSET=utf8
TABLESPACE='sys_tablespace'
1 row in set (Elapsed: 00:00:00.00)
示例2:建表时创建部分列为行存列,使用ALTER TABLE 语句增加行存列。
gbase> DROP TABLE t2;
Query OK, 0 rows affected
gbase> CREATE TABLE t2(a int,b int,c int,d int, GROUPED a(a,b));
Query OK, 0 rows affected
gbase> ALTER TABLE t2 ADD GROUPED c(c,d);
Query OK, 0 rows affected
Records: 0
Duplicates: 0
Warnings: 0
gbase> SHOW CREATE TABLE t2 \G
*************************** 1. row ***************************
Table: t2
Create Table: CREATE TABLE "t2" (
"a" int(11) DEFAULT NULL,
"b" int(11) DEFAULT NULL,
"c" int(11) DEFAULT NULL,
"d" int(11) DEFAULT NULL,
GROUPED "a" ("a","b"),
GROUPED "c" ("c","d")
)
ENGINE=EXPRESS
DEFAULT
CHARSET=utf8
TABLESPACE='sys_tablespace'
1 row in set (Elapsed: 00:00:00.00)
示例3:使用ALTER TABLE 语句创建行存列,行存列使用压缩语法。
gbase> DROP TABLE t2;
Query OK, 0 rows affected
gbase> CREATE TABLE t2 (a int, b varchar(10),c int ,d int);
Query OK, 0 rows affected
gbase> ALTER TABLE t2 ADD GROUPED c(c,d) COMPRESS('HighZ', 0);
Query OK, 0 rows affected
Records: 0
Duplicates: 0
Warnings: 0
gbase> show create table t2\G
*************************** 1. row ***************************

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1041
Table: t2
Create Table: CREATE TABLE "t2" (
"a" int(11) DEFAULT NULL,
"b" int(11) DEFAULT NULL,
"c" int(11) DEFAULT NULL,
"d" int(11) DEFAULT NULL,
GROUPED "c" ("c","d") COMPRESS('HighZ', 0)
)
ENGINE=EXPRESS
DEFAULT
CHARSET=utf8
TABLESPACE='sys_tablespace'
1 row in set (Elapsed: 00:00:00.00)

gload 和 gunload 实用程序有其局限性。这些实用程序只能用于在同一操
作系统上相同版本的数据库服务器之间移动数据。您无法修改数据库模式,必



须关闭日志记录,并且实用程序可能很难使用。
gload 和 gunload 实用程序具有以下要求:

源数据库和目标数据库必须来自相同版本的数据库服务器。不能使用
gload 和 gunload 实用程序将数据从一个版本移动到另一个。

您不能使用 gload 和 gunload 在不同类型的数据库服务器之间移动
数据。

gload 命令必须与相应的 gunload 命令
(它卸载相同的表或 gload 引
用的表)的作用域相同。例如,您无法做到先用 gunload 来卸载整个
数据库,然后再使用 gload 从该数据库仅装入表子集。

如果数据库包含扩展或智能大对象数据类型,那么不要使用 gload 和
gunload 来移动数据。
(而是使用 HPL 来移动数据。


因为 gload 读取的磁带包含以磁盘页大小为单位存储的二进制数据,
所以源数据库驻留的计算机(使用 gunload 的计算机)和目标数据库
将驻留的计算机(使用 gload 的计算机)必须具有相同的页大小、相
同的数字数据表示法,针对结构和单位具有相同的字节对齐方式。

您不能使用 gload 和 gunload 在非 GLS 和 GLS 语言环境之间移
动数据。

不能在高可用性集群中的服务器上使用 gload 和 gunload。

如果您压缩了表或分段,那么不能使用 gload 和 gunload。
如果 NLS 和 GLS 语言环境是相同的,
那么可使用 gunload 和 gload 在
数据库间移动数据。
例如,
如果 NLS 和 GLS 表都是使用相同的法语语言环境
创建的,那么 gload 和 gunload 可以移动数据。但是,如果用户 A 在服务器
A 上具有法语语言环境 NLS 表并试图将数据装入服务器 B 上的德语语言环
境 GLS 表,那么 gload 将报告错误。
如果页大小不同,gload 将失败。如果两台计算机上的对齐或数字数据类
型不同(例如:最重要的字节在最后而不是第一个或者使用不同的浮点类型表



示法)
,那么数据页面的内容会得到错误的解释。