返回首页

gbase数据、南大通用产品文档:GBase8s外部表的系统目录条目

更新日期:2024年09月11日

可查询系统目录表,以确定外部表的状态。
每次创建外部表时,GBase 8s 都会更新 sysexternal 和 sysextdfiles 系统目录表。指定外
部格式类型 (fmttype) FIXED 时,将更新 sysextcols 系统目录表。
表 1. 外部表系统目录条目
表名
描述
sysexternal
存储有关每个外部表的信息。
sysextdfiles
存储有关外部表数据文件的信息
sysextcols
存储有关类型为 FIXED 的外部表的信息

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 261 -
请参阅《GBase 8s SQL 指南:参考》以获取更多信息。
创建外部表时,将在 systables 系统目录中插入行;但是,除非在创建外部表时指定了
NUMROWS 子句,否则 nrows(行数)和 npused(所用数据页数)列可能无法精确反
映外部表所用行数和数据页数。
创建外部表时如果没有为 NUMROWS 子句指定值,GBase 8s 就无法确定外部表中的行
数,因为数据位于数据库外的数据文件中。GBase 8s 通过插入较大值 (MAXINT – 1)
来更新 systables 系统目录中的 nrows 列,并根据 nrows 的值计算所用数据页数。优化
器稍后将使用 npused 和 nrows 中存储的值来确定最有效的执行计划。尽管无需精确指
定 NUMROWS 子句,但是指定得越准确,nrows 和 npused 的值就越准确。

函数说明

DATEDIFF()返回开始日期expr 和结束日期expr2 之间的天数;

expr 和expr2 是date 或者datetime 表达式;

只有日期部分用于计算;

如果用于计算日期间隔的参数不是一个date 或者datetime 类型,例如,TIME
型数据,计算结果是不可信的。
示例
示例1
expr 晚于expr2,返回的天数是正数。
gbase> SELECT DATEDIFF('2010-08-30 23:59:59','2010-08-29') FROM t;
+----------------------------------------------+
| DATEDIFF('2010-08-30 23:59:59','2010-08-29') |
+----------------------------------------------+
| 1 |
+----------------------------------------------+
1 row in set
示例2
expr 早于expr2,返回的天数是负数。

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 856
gbase> SELECT DATEDIFF('2010-07-31 23:59:59','2010-08-30') FROM t;
+----------------------------------------------+
| DATEDIFF('2010-07-31 23:59:59','2010-08-30') |
+----------------------------------------------+
| -30 |
+----------------------------------------------+
1 row in set

TO_SINGLE_BYTE
语法
TO_SINGLE_BYTE(arg)
函数说明
将传入的arg 从全角字符转半角字符。arg 可以是任何类型的值和列,如果arg 为
字符串,并且字符串里面含有全角的话,在输出结果中就会将全角字符转为半角
字符,其他字符保持不变。
该函数仅在UTF8 字符集和GBK 字符集下有效。

当前仅95 个字符支持全角转半角。
95 个字符如下:
空格

"
#
$
%
&



*
+



/


<
=
>

@
[
\
]
^
_

{
|
}

A-Z
a-z
0-9
create as select 时候,包含函数列的字段类型根据查询结果的字段类型来确
定,如果是查询结果的字段类型为字符类型,会根据结果的最大长度来判断
是varchar、longblob 类型。

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

只有VARCHAR、CHAR、TEXT 支持字符串类型的列类型支持全角
字符,并且使用to_single_byte 转换成功。

LONGBLOB、BLOB 虽然能存放全角字符,但是是按二进制存储的,
TO_SINGLE_BYTE 转换后还是全角字符。

BLOB 类型经TO_SINGLE_BYTE 转换后为VARBINARY 类型
示例
示例:
create table t(a int, b varchar(10), c datetime, t text, e longblob, f blob, g char(10));
gbase> insert into t values(1, 'aaaaaa', '2011-01-01 11:11:11', 'aaaa', 'aaaa',
'aaaa', 'aaaa');
Query OK, 1 row affected (Elapsed: 00:00:00.05)
gbase> select to_single_byte(a) as sing_a,to_single_byte(b) as sing_b,
to_single_byte(c) as sing_c, to_single_byte(t) as sing_t, to_single_byte(e) as sing_e,
to_single_byte(f) as sing_f, to_single_byte(g) as sing_g from t;
+--------+--------+---------------------+--------+--------------+--------------+------------+
| sing_a | sing_b | sing_c
| sing_t | sing_e
| sing_f
| sing_g
|
+--------+--------+---------------------+--------+--------------+--------------+------------+
| 1
| aaaaaa | 2011-01-01 11:11:11 | aaaa
| aaaa
| aaaa
|
aaaa
|
+--------+--------+---------------------+--------+--------------+--------------+------------+
1 row in set (Elapsed: 00:00:00.03)
gbase> create table ty as select to_single_byte(a) as sing_a,to_single_byte(b) as
sing_b, to_single_byte(c) as sing_c, to_single_byte(t) as sing_t, to_single_byte(e) as
sing_e, to_single_byte(f) as sing_f, to_single_byte(g) as sing_g from t;
Query OK, 1 row affected (Elapsed: 00:00:00.11)
gbase>
show create table ty \G
*************************** 1. row ***************************
Table: ty
Create Table: CREATE TABLE "ty" (
"sing_a" varchar(11) DEFAULT NULL,
"sing_b" varchar(10) DEFAULT NULL,
"sing_c" varchar(26) DEFAULT NULL,
"sing_t" varchar(10922) DEFAULT NULL,

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
673
"sing_e" longblob,
"sing_f" varbinary(32767) DEFAULT NULL,
"sing_g" varchar(10) DEFAULT NULL
) ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace'
1 row in set (Elapsed: 00:00:00.00)
gbase> select * from ty;
+--------+--------+---------------------+--------+--------------+--------------+------------+
| sing_a | sing_b | sing_c
| sing_t | sing_e
| sing_f
| sing_g
|
+--------+--------+---------------------+--------+--------------+--------------+------------+
| 1
| aaaaaa | 2011-01-01 11:11:11 | aaaa
| aaaa
| aaaa
|
aaaa
|
+--------+--------+---------------------+--------+--------------+--------------+------------+
1 row in set (Elapsed: 00:00:00.02)