返回首页

gbase数据、南大通用产品文档:GBase8aFIELD(str,str1,str2,str3,)

更新日期:2024年09月11日

函数说明
返回等于str 的字符串位置。
如果str 等于str1 则返回1,
如果str 等于str2 则返回
2,依次向后进行比较。都不相等时,返回值为0;如果所有对于FIELD()的参数
均为字符串,则所有参数均按照字符串进行比较;如果所有的参数均为数值,则
按照数值进行比较;如果str 为NULL,则返回值为0,原因是NULL 不能同任何
值进行同等比较。FIELD()是ELT()的补数。
示例
示例1:FIELD()的参数为字符串,所有参数按照字符串进行比较。
gbase> SELECT FIELD('ej','Hej', 'ej', 'Heja', 'hej', 'foo') FROM dual;
+-----------------------------------------------+
| FIELD('ej','Hej', 'ej', 'Heja', 'hej', 'foo') |
+-----------------------------------------------+
|
2 |
+-----------------------------------------------+
1 row in set
示例2:FIELD()的参数为数字,所有参数按照数字进行比较。
gbase> SELECT FIELD('112','12','112','123','213') FROM dual;
+-------------------------------------+
| FIELD('112','12','112','123','213') |
+-------------------------------------+
|
2 |
+-------------------------------------+
1 row in set
示例3:str 与str1,...strn 都不相等,返回值为0。
gbase> SELECT FIELD('fo','Hej', 'ej', 'Heja', 'hej', 'foo') FROM dual;
+-----------------------------------------------+
| FIELD('fo','Hej', 'ej', 'Heja', 'hej', 'foo') |
+-----------------------------------------------+
|
0 |
+-----------------------------------------------+
1 row in set

DROP DATABASE [IF EXISTS] database_name;
DROP DATABASE 删除指定的数据库以及它所包含的表。
请小心使用此语句!
用户
需要获得对数据库的DROP 权限,才可以使用DROP DATABASE。
使用关键字IF EXISTS,以防止由于数据库不存在而报告错误。
示例
示例1:删除数据库。
gbase> DROP DATABASE IF EXISTS test;
Query OK, 1 row affected

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 604
TABLE
用户可以通过CREATE TABLE 命令在当前数据库创建一个指定名称的表。
GBase UP 支持6 种表类型,复制表、随机分布表、哈希分布表、nocopies 表、临时
表、hive 表。
表类型
特点
复制表
使用REPLICATED 关键字,每个节点上存储全量的
数据。
分布表
随机分布表
数据以随机分配方式,均匀存储到集群各个节点
上。
哈希分布表
使用DISTRIBUTED BY 关键字,指定表中的一列为
哈希列,根据哈希运算结果,将数据分布存储在集
群的各个节点上。
临时表
使用TEMPORARY 关键字,临时表被限制在当前连接
中,当连接关闭时,临时表会自动地删除。创建临
时表时,也可以使用关NOCOPIES、REPLICATED 和
DISTRIBUTED BY 关键字。
nocopies 表
使用NOCOPIES 关键字,近似于分布表,区别在于,
nocopies 表没有数据冗余存储,
因此可以获得比较
好的查询性能,一般用于存储一些复杂查询临时结
果的场景。nocopies 表可以转换为分布表。
hive 表
使用engine=hive 引擎关键字,创建hive 表,实
现UP 层对hadoop 存储数据的统一管理,
hive 表可
进行与8a 表的关联查询,以及进行跨引擎的数据
交换

在本节中用到的术语如下。

复制表:创建表使用REPLICATED 关键字,这样创建的表为复制表。复制表
将会存储于GBase UP 的各个节点上,每个节点都会保存完整数据。

随机分布表:不需要使用关键字。数据以随机分配方式,均匀存储到集群各个
节点。

哈希分布表:创建表时使用DISTRIBUTED BY column_name 指定创建表中的
物理列column_name 是哈希列,
这样创建的表为哈希分布表。
数据按照指定的
Hash 字段进行哈希分布。

临时表:创建表时使用TEMPORARY 关键字,这样创建的表为临时表,临时
表仅存在于当前session 中。

nocopies 表:创建表时使用NOCOPIES 关键字,这样创建的表为nocopies 表。
这种表不产生副本。

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

预租磁盘:预租磁盘空间可以预先批量分配磁盘块,这样尽量保证了列的DC
数据文件磁盘块连续。在顺序读取列DC 数据时,性能会有明显提升。

表类型:GBase UP 数据库主要有以下6 种表类型。
复制表
随机分布表
哈希分布表
临时表
nocopies 表
hive 表

定长模式的导出
示例
定长模式导出数据。
示例中所用的表及数据:
DROP TABLE IF EXISTS gs;
CREATE TABLE gs (a int DEFAULT NULL, b varchar(25) DEFAULT
NULL);
INSERT INTO gs values(1,'GBase 8a'),(2,'GBase 8a MPP Cluster');
导出SQL 语句:
gbase>
SELECT
*
FROM
gs
INTO
OUTFILE
'/home/gbase/temp/length_1.txt' FIELDS TERMINATED BY '' ENCLOSED
BY '' ESCAPED BY '';
Query OK, 2 rows affected
查看导出文件:
$ cat length_1.txt
1
GBase 8a
2
GBase 8a MPP Cluster
使用二进制方式查看导出文件,导出数据时使用了空格补齐:
$ hexdump -C length_1.txt
00000000
31 20 20 20 20 20 20 20
20 20 20 47 42 61 73 65
|1

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1249
GBase|
00000010
20 38 61 20 20 20 20 20
20 20 20 20 20 20 20 20
| 8a
|
00000020
20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20
|
|
*
00000050
20 20 20 20 20 20 0a 32
20 20 20 20 20 20 20 20
|
.2
|
00000060
20 20 47 42 61 73 65 20
38 61 20 4d 50 50 20 43
|
GBase 8a
MPP C|
00000070
6c 75 73 74 65 72 20 20
20 20 20 20 20 20 20 20
|luster
|
00000080
20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20
|
|
*
000000a0
20
20
20
20
20
20
20
20
20
20
20
20
20
0a
|
.|
000000ae
注意

一个varchar 字符可能占用多个字节。如当前字符集为utf8 时,一
个varchar 字符占用三个字节,如果建表时设置varchar(10),则该
字段最大长度可能占用30 个字节。