返回首页

gbase数据、南大通用产品文档:GBase8ae+308 |

更新日期:2024年09月11日

+--------------------------------------+
示例8
varchar 类型支持,示例如下:
gbase> create function type_varchar(i varchar) returns varchar $$ return i $$ LANGUAG
E plpythonu;
gbase> select type_varchar('abc');
+---------------------+

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1410
| type_varchar('abc') |
+---------------------+
| abc
|
+---------------------+
示例9
SQL NULL 和Python None 转换支持,如下示例:
gbase> select type_varchar(NULL);
+--------------------+
| type_varchar(NULL) |
+--------------------+
| NULL
|
+--------------------+
gbase> create function type_none() returns varchar $$ return None $$ LANGUAGE plpythonu;
gbase> select type_none();
+-------------+
| type_none() |
+-------------+
| NULL
|
+-------------+

MULTISET 数据类型是存储无序集的集合类型,它能包含重复的元素值。
MULTISET 中的元素没有顺序位置。也就是说,在 MULTISET 中不存在第一元素、第二
元素或第三元素的概念。
MULTISET 中的所有元素都具有相同的元素类型。要指定元素类型,使用以下语法:
MULTISET(element_type NOT NULL)
集合的 element_type 可以是下列任何类型:
任何内置类型(SERIAL、SERIAL8、BIGSERIAL、BYTE 和 TEXT 除外)
未命名或命名 ROW 类型
另一个集合类型或不透明类型
除非另外指示,否则可以在使用任何其他数据类型的地方使用 MULTISET。例如:
在用来搜索匹配的 MULTISET 值的 SELECT 语句 WHERE 子句中的 IN 谓词后面
作为用来确定 LIST 列中的元素数目的 CARDINALITY 或 mi_collection_card( )
函数的自变量
不能将 MULTISET 值用作聚集函数(例如,AVG、MAX、MIN 或 SUM)的自变量。
必须对 MULTISET 元素指定 NOT NULL 约束。其他约束对 MULTISET 列无效。有关
MULTISET 集合类型的更多信息,请参阅 GBase 8s SQL 指南:语法。
如果两个 multiset 数据值具有相同的元素,那么它们相等,即使各元素在集中的位
置不同。下列两个示例都是 multiset 值但不相等:
MULTISET {"blue", "green", "yellow"}
MULTISET {"blue", "green", "yellow", "blue"}
下列 multiset 值是相等的:
MULTISET {"blue", "green", "blue", "yellow"}
MULTISET {"blue", "green", "yellow", "blue"}
可以将相同表的不超过 97 列声明为 MULTISET 数据类型。
(同一限制适用于 SET 和
LIST 集合类型。)
命名 ROW
请参阅 ROW 数据类型,已命名。

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 102 -

可管理外部表装入和卸载操作期间发生的错误。
这些主题描述如何使用拒绝文件和错误消息来管理错误,以及如何恢复已装入到数据库的
数据。
拒绝文件
装入期间具有转换错误的行将写入执行转换的服务器上的拒绝文件中。
CREATE EXTERNAL TABLE 语句中的 REJECTFILE 关键字用于确定指定给拒绝文件的
名称。
可不使用拒绝文件,而是使用 CREATE EXTERNAL TABLE 语句中的 MAXERRORS 关
键字来指定数据库服务器停止装入数据之前允许的错误数。
(如果不设置 MAXERRORS 关
键字,数据库将无视错误数,处理所有数据。)
数据库服务器将在开始执行装入时除去拒绝文件(如果有)。仅当装入期间发生错误时,
才会重新创建和写入拒绝文件。
拒绝文件条目是包含以逗号分隔的以下字段的单行:
file name, record, reason-code, field-name: bad-line
file name
输入文件的名称
record
输入文件中的记录号,在该文件中检测到错误

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 270 -
reason-code
错误的描述
field-name
外部字段名称(行中的第一个错误即在此处出现)或 (如果拒绝不特别针
对特定列)
bad-line
坏行本身(仅对于定界或固定 ASCII 文件)
装入操作以 ASCII 格式写入 file name、record、field-name 和 reason-code。
bad-line 信息由输入文件的类型决定:
 对于定界文件或固定文本文件,
整个坏行将直接复制到拒绝文件中。
但是如果定界格
式表具有 TEXT 或 BYTE 列,那么拒绝文件中将不包含任何坏数据。装入操作将
仅为每个拒绝的行生成一个标题。
 对于 GBase 8s 内部数据文件,坏行不会放入拒绝文件中,因为您无法编辑文件中的
二进制表示。但是,拒绝文件中仍然会报告 file name、record、reason-code 和
field-name,这样您可以隔离该问题。
以下类型的错误可能导致行被拒绝。
CONSTRAINT constraint name
违反了该约束。
CONVERT_ERR
有字段遇到转换错误。
MISSING_DELIMITER
找不到定界符。
MISSING_RECORDEND
找不到记录结尾。
NOT NULL
field-name 中找到了空值。
ROW_TOO_LONG
输入记录长度超过了 64 KB。
输入记录长度超过了 2 GB。

外部表错误消息
与外部表有关的大多数错误消息都在范围 -26151 到 -26199 之间。
其他消息为 -615、-999、-23852 和 -23855。在这些消息中,n macro 和 r macro 指从替
换字符 %r(first..last) 生成的值。有关错误消息列表,请参阅 GBase 8s Error Messages,或
使用 finderr 实用程序。有关违例表错误消息的信息,请参阅《GBase 8s 管理员参考》。

外部表的表类型可恢复性
装入数据时,数据库服务器将检查表的可恢复性级别。
 如果表类型为 RAW,数据库服务器可使用轻量级追加(快速)方式装入数据和处理
检查约束。如果装入期间数据库服务器崩溃,将不回滚装入的数据,而表可能保持未
知状态。
 如果表类型为 STATIC,那么数据库服务器根本不能装入数据。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 271 -
 只有高级方式支持数据可恢复性。
高级方式使用记录的常规插入。
要在快速方式装入
失败之后恢复数据,请还原为最近的 0 级备份。对于此级别的可恢复性,表类型必
须为 STANDARD。
有关复原表类型的信息,请参阅《GBase 8s 备份与复原指南》。












































GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 272 -
4 日志记录和日志管理