返回首页

gbase数据、南大通用产品文档:GBase8s声明全局变量

更新日期:2024年09月11日

全局变量将它的值存储在内存中,
其他 SPL 例程可用,
由相同的用户会话运行在同一数据
库上。全局变量有下列特征:

它需要缺省值。

可在任何 SPL 例程中使用它,虽然必须在使用它的每一例程中定义它。

它将它的值从一个 SPL 例程带到另一个,直到会话结束为止。
限制: 您不可将集合变量定义为全局变量。
下图展示分享一个全局变量的两个 SPL 函数。
图: 分享一个全局变量的两个 SPL 函数。
CREATE FUNCTION func1() RETURNING INT;
DEFINE GLOBAL gvar INT DEFAULT 2;
LET gvar = gvar + 1;
RETURN gvar;
END FUNCTION;

CREATE FUNCTION func2() RETURNING INT;
DEFINE GLOBAL gvar INT DEFAULT 5;
LET gvar = gvar + 1;
RETURN gvar;
END FUNCTION;
虽然您必须定义带有缺省值的全局变量,但仅在您首次使用它时,将变量设置为缺省值。
如果您以给定的顺序在下图中执行这两个函数,则 gvar的值将为 4。
图: 全局变量缺省值。
EXECUTE FUNCTION func1();
EXECUTE FUNCTION func2();
但是,如果您以相反的顺序执行函数,如下图所示,则 gvar 的值将为 7。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 277 -

图: 全局变量缺省值。
EXECUTE FUNCTION func2();
EXECUTE FUNCTION func1();
要了解更多信息,请参阅 执行例程。

使用前提
所有字段的最大长度均小于16MB (16777216B)。
定长导出模式参数定义如下表:
参数
参数设定值
FIELD TERMINATER BY
''
FIELD ENCLOSED BY
''
FIELD ESCAPED BY
''
示例:
SELECT * FROM gs INTO OUTFILE '/home/gbase/temp/length_1.txt' FIELDS TERMINATED BY
'' ENCLOSED BY '' ESCAPED BY '';
定长模式的数据导出方式:

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 232
导出时各个字段都按照其字段的最大长度导出,
如果该字段数据的实际长度小于该
字段的最大长度,则以空格补齐。
定长模式下的转义符设置:
在定长模式下,需强制指定转义符为空,此时导出的结果是定长且对任何字符均不
转义。
注意
定长导出不支持HIVE 引擎表。

功能简介
GBase 8a MPP Cluster 提供了面向用户的SQL 接口加载方式。
支持如下功能:

支持本地文件加载

支持从通用数据服务器拉取数据加载;

支持FTP/HTTP/HDFS/SFTP 等多种协议;

支持多加载机对单表的并行加载,最大化加载性能;

支持普通文本、gzip 压缩、snappy 压缩、lzo 压缩等多种格式数据文件加载;

支持普通文本与定长文本的加载,并与V8.5.1.2 和V86 版本格式兼容;

支持加载状态和信息的实时查询

支持错误数据溯源功能,可以准确定位错误数据在源文件中的位置;

加载性能可以随着集群规模的扩展而持续提升。
语法
LOAD DATA INFILE 'file_list' INTO TABLE[vcname.] [dbname.]tbl_name [options]
说明
file_list 说明

集群本地数据源加载:
1)支持指定一个或多个数据节点上的本地文件进行加载。使用file://host+abs_path,
多个file://host+abs_path 之间使用逗号分隔,
支持采用直接读取模式加载指定集群
数据节点的本地文件。
2)支持指定所有数据节点并发加载各自节点上的文件。使用file://+abs_path,多个
file://+abs_path 之间使用逗号分隔,
支持采用直接读取模式加载集群所有数据节点
的本地文件。

集群以外的通用文件服务器上的数据源加载:
1)通用文件服务器上需要搭建ftp/http/hdfs/sftp 服务,并将数据文件拷贝到服务配置
的路径下,保证集群节点能通过相应服务访问到数据。

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
128
2)加载时使用URL 的方式指定通用文件服务器上的数据文件路径,以逗号(',')作为
多个文件/目录的分隔符,
格式为
“scheme://host:port/path, scheme://host:port/path”

同时文件名、目录部分均支持使用通配符,默认对路径及文件进行匹配,如:
“http://10.10.1.1/data/??????/*.tbl”。
示例
示例:
LOAD DATA INFILE 'ftp://gbase:gbase@127.0.0.1/data/a.tbl' INTO TABLE test.t
DATA_FORMAT 3;
LOAD DATA INFILE 'http://127.0.0.1/data/b.tbl.gz' INTO TABLE test.t
DATA_FORMAT 3;
LOAD DATA INFILE 'hdp://gbase@127.0.0.1:50070/data/a.tbl.snappy' INTO
TABLE test.t DATA_FORMAT 3;
LOAD DATA INFILE 'ftp://192.168.0.1/pub/lineitem.tbl,
http://192.168.0.2/lineitem.tbl' INTO TABLE test.lineitem FIELDS
TERMINATED BY '|' ENCLOSED BY '"' LINES TERMINATED
BY '\n';
加载状态和结果查看示例:
-- 加载状态监控
gbase> use information_schema;
gbase> select * from load_status;
-- 显示task_id 100 任务的从第1 条开始的后面5 条错误数据信息
gbase> show load logs 100 limit 1,5;
-- 显示所有coordinator 节点上task_id 101 任务的前10 条错误数据信息
gbase> show gcluster load logs 101;
-- 查询所有coordinator 节点,select 查询形式,查询加载信息,表名为:
CLUSTER_LOAD_RESULT
gbase> select * from information_schema.cluster_load_result;