返回首页

gbase数据、南大通用产品文档:GBase8a创建RANGE 分区表

更新日期:2024年09月11日

语法格式
partition_options:
PARTITION BY RANGE(expr)
(partition_definition [, partition_definition] ...)
[SUBPARTITION BY]
{
[LINEAR] HASH(expr)
|
[LINEAR] KEY(column_list) }
[SUBPARTITIONS num]
partition_definition:
PARTITION partition_name
VALUES LESS THAN {(expr) | MAXVALUE}
[(subpartition_definition [, subpartition_definition] ...)]
subpartition_definition:

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
964
SUBPARTITION logical_name
说明

expr 是某列值或一个基于某个列值、并返回一个整数值的表达式;

各分区的expr 列表的值必须递增。

列的类型和表达式支持的函数及运算符参考概述内的具体描述
示例
示例1:创建RANGE 分区表。
gbase> CREATE TABLE t1 (
a int(11) DEFAULT NULL,
b varchar(10) DEFAULT NULL
) REPLICATED PARTITION BY RANGE (a)
(PARTITION p0
VALUES LESS THAN (10) ,
PARTITION p1
VALUES LESS THAN (20) ,
PARTITION p2
VALUES LESS THAN (30) ,
PARTITION p3
VALUES LESS THAN (40) ) ;
Query OK, 0 rows affected (Elapsed: 00:00:00.11)
示例2:创建RANGE 分区表,带hash 子分区,不指定子分区名。
gbase> create table t1 (id int, dt int)
partition by range (id)
subpartition by hash (quarter(dt))
subpartitions 4
(
partition p0 values less than (1990),
partition p1 values less than (2000),
partition p2 values less than maxvalue
);

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
965
Query OK, 0 rows affected (Elapsed: 00:00:00.17)
示例3:创建RANGE 分区表,带hash 子分区,指定子分区名。
gbase> create table t1 (id int, dt int)
partition by range (id)
subpartition by hash (quarter(dt))
(
partition p0 values less than (1990)
(
subpartition part0_一季度,
subpartition part0_q2,
subpartition part0_q3,
subpartition part0_q4
),
partition p1 values less than (2000)
(
subpartition part1_q1,
subpartition part1_二季度,
subpartition part1_q3,
subpartition part1_q4
),
partition p2 values less than maxvalue
(
subpartition part2_q1,
subpartition part2_q2,
subpartition part2_q3,
subpartition part2_四季度
)

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
966
);
Query OK, 0 rows affected (Elapsed: 00:00:00.16)
示例4:创建RANGE 分区表,带key 子分区,不指定子分区名。
gbase> create table t1 (id int, dt date)
partition by range (id)
subpartition by key (dt)
subpartitions 4
(
partition p0 values less than (1990),
partition p1 values less than (2000),
partition p2 values less than maxvalue
);
Query OK, 0 rows affected (Elapsed: 00:00:00.16)
示例5:创建RANGE 分区表,带key 子分区,指定子分区名。
gbase> create table t1 (id int, dt date)
partition by range (id)
subpartition by key (dt)
(
partition p0 values less than (1990)
(
subpartition part0_一季度,
subpartition part0_q2,
subpartition part0_q3,
subpartition part0_q4
),
partition p1 values less than (2000)

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
967
(
subpartition part1_q1,
subpartition part1_二季度,
subpartition part1_q3,
subpartition part1_q4
),
partition p2 values less than maxvalue
(
subpartition part2_q1,
subpartition part2_q2,
subpartition part2_q3,
subpartition part2_四季度
)
);
Query OK, 0 rows affected (Elapsed: 00:00:00.16)

SQL 92 和 99 标准为动态 SQL 指定 DESCRIBE INPUT 语句。
JDBC 3.0 规范引入对应于 DESCRIBE INPUT 支持的 ParameterMetaData 类和方法。
GBase 8s JDBC Driver 实现 java.sql.ParameterMetaData 类。
此接口用于描述准备好的语句中
的输入参数。已实现了方法getParameterMetaData() 来为特别的语句检索元数据。
ParameterMetaData 类和 getParameterMetaData() 方法是 JDBC 3.0 API 的一部分,作为
J2SDK1.4.0 中的接口包括它们。在 JDBC 3.0 规范中指定这些接口的详细信息。

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 82 -
GBase 8s JDBC Driver 已实现了 ParameterMetaData 接口的附加方法,来扩展它的功能,如
下表中所示。
返回类型
方法
描述
int
getParameterLength (int param)
检索参数长度
int
getParameterExtendedId (int param)
检索参数扩展的 ID
java.lang.Stri
ng
getParameterExtendedName (int param) 检索参数扩展的名称
java.lang.Stri
ng
getParameterExtendedOwnerName (int
param)
检索该类型的参数扩展的所
有者名称
int
getParameterSourceType (int param)
检索参数 SourceType
int
getParameterAlignment (int param)
检索参数对齐
下列是在 GBase 8s JDBC Driver 中使用 ParameterMetaData 接口的一个示例:
. . .
try
{
PreparedStatement pstmt = null;

pstmt = myConn.prepareStatement(
"select * from table_1 where int_col = ? "
+"and string_col = ?");
ParameterMetaData paramMeta = pstmt.getParameterMetaData();
int count = paramMeta.getParameterCount();
System.out.println("Count : "+count);

for (int i=1; i <= count; i++)
{
System.out.println("Parameter type name : "
+paramMeta.getParameterTypeName(i));
System.out.println("Parameter type : "
+paramMeta.getParameterType(i));
System.out.println("Parameter class name : "
+paramMeta.getParameterClassName(i));
System.out.println("Parameter mode : "

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 83 -
+paramMeta.getParameterMode(i));
System.out.println("Parameter precision : "
+paramMeta.getPrecision(i));
System.out.println("Parameter scale : "
+paramMeta.getScale(i));
System.out.println("Parameter nullable : "
+paramMeta.isNullable(i));
System.out.println("Parameter signed : "
+paramMeta.isSigned(i));
}
. . .

动表
您可以使用 gunload 和 gload 实用程序将表从同一台计算机上的一个数
据库空间移动到另一个。
将表从一台计算机移动到另一台计算机:
1.
确保两台计算机上的页大小、数字表示以及结构和联合上的字节对齐
相同。
(在某些 UNIX™ 系统上,页大小为 2 KB。

2.
决定存储已卸载数据的地方。
3.
运行 gcheck 实用程序以确保数据库的一致性。
4.
如果希望保存表的触发器、访问特权、SPL 例程、缺省值、约束和同
义词,请运行 dbschema 实用程序。
5.
运行 gunload 实用程序。
有关 gunload 命令语法的详细信息,请参阅 gunload 命令的语法。
6.
如果需要,将存储介质传送到新计算机。
7.
如果表包含存储在 Blobspace 中的简单大对象,那么确定在何处存储
简单大对象。如果需要,创建新的 Blobspace。
8.
关闭日志记录。
装入表时,必须关闭目标数据库上的日志记录。
(创建和装入整个数据
库时,日志记录的状态并不重要。

9.
运行 gload 实用程序。



有关 gload 命令语法的详细信息,请参阅 gload 命令的语法。
10. 创建已修改数据库的 0 级备份。
11. 打开日志记录(如果您需要日志记录)

12. 如果希望恢复表的触发器、访问特权、SPL 例程、缺省值、未保留的
约束以及同义词,请运行 dbschema 实用程序或手动重新创建这些对
象。
即使是单个表,主键或缺省值之类的约束也都会保留。外键、访问特权、SPL
例程和同义词不会保留。