返回首页

gbase数据、南大通用产品文档:GBase8s数据库对象名

更新日期:2024年09月11日

使用数据库对象名段来指定数据库对象的名称,例如列、表、视图或用户定义的
例程。当看到引用数据库对象名时,使用本段。
语法
Database Object Name


GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1608
元素
描述
限制
语法
database
object 驻留的数据库 必须存在
数据库名
dbservername
database 的数据库服
务器
必须存在。在 @
后面没有空格。
标识符
object
数据库对象的名称
请参阅用法
标识符
用法
数据库对象名可以包含限定符和分隔符以指定数据库、服务器、协同服务器(仅
对于 XPS)、所有者和(对于某些对象)另一个数据库对象(当前数据库对象是
其组成部分)。
GBase 8s 支持使用以冒号(:)—“数据库名:表名”的形式访问指定数据库中的指
定表。
例如,以下表达式指定在数据库服务器 butler 的 stores_demo 数据库中由用户
gbasedbt 拥有的 stock 表的 unit-price 列。
stores_demo@butler:gbasedbt.stock.unit_price
如果创建或重命名一个数据库对象,那么声明的新名称在数据库中相同类型的对
象中必须是唯一的。因而,新视图的名称必须在相同数据库内存在的表、视图和
序列对象的名称和同义词中是唯一的。(但视图可以和相同服务器的不同数据库
中的视图具有相同的名称,或例如和触发器具有相同名称,因为它们是不同类型
的对象。)
在兼容 ANSI 的数据库中,owner.object 组合对于对象类型在数据库中必须是唯
一的。数据库对象规范必须包含不属于您的数据库对象所有者名称。例如,如果
指定了一个不属于您的表,那么也必须指定表的所有者。所有系统目录表的所有
者都是 gbasedbt。
在 GBase 8s 中,唯一性要求不适用于用户定义的例程(UDR)的名称。有关更
多信息,请参阅例程重载以及例程签名。
数据库语言环境代码集中的字符用在数据库对象名中是有效的。有关更多信息,
请参阅 GBase 8s GLS 用户指南。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1609
在外部数据库中指定数据库对象
既可以在本地数据库服务器的外部数据库中,也可以在远程数据库服务器的外部
数据库中指定数据库对象。
在跨数据库查询中指定数据库对象
要在本地数据库服务器的另一个数据库中指定一个对象,必须使用数据库名(如
果外部数据库是符合 ANSI 的,还要加上使用者名称)来限定对象标识符,如此
示例所示:
corp_db:hrdirector.executives
在此示例中,外部数据库的名称是 corp_db。表所有者的名称是 hrdirector。表
的名称为 executives。这里的冒号分隔符( : )要跟在数据库限定符后面。
在 GBase 8s 中,对本地数据库服务器的其它数据库的查询及其其它数据操纵语
言(DML)操纵可以访问在跨数据库事务中的数据类型 中列出的内置不透明数据
类型。DML 操作也可以访问能够强制转型为内置类型的用户定义的数据类型
(UDT)及基于内置类型的 DISTINCT 类型(如果每个 DISTINCT 类型和 UDT
显式地强制转型为内置类型,并且所有的 DISTINCT 类型、UDT 和强制类型转
换在所有参与的数据库中都已定义)。相同的数据类型限制也适用于参量。同时
适用于访问本地 GBase 8s 示例的其它数据库的“用户定义的例程”(UDR)的返
回值(如果该 UDR 定义在所有参与的数据库中)。
在跨服务器查询中指定数据库对象
要在远程数据库服务器的数据库中指定一个对象,必须除数据库对象名以外,还
使用指定数据库、数据库服务器和所有者(如果外部数据库是符合 ANSI 的)的
fully-qualified identifier 。例如,hr_db@remoteoffice:hrmanager.employees 是一
个标准的表名称。
这里,数据库是 hr_db,数据库服务器是 remoteoffice,表所有者是
hrmanager,表名是 employees。在 database 和 database server 限定符之间需要
不带空格的 at ( @ )分隔符。跨服务器查询只能访问不是不透明数据类型的内
置数据类型。在跨服务器操作中不能访问 UDT,也不能访问不透明、复杂或其它
扩展数据类型。(有关 GBase 8s 在跨服务器操作中支持的 DISTINCT 和内置的
OPAQUE 数据类型的列表,请参阅跨服务器事务中的数据类型。)

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1610
在 GBase 8s 中,如果 UDR 在远程数据库服务器上存在,则必须为 UDR 指定
一个标准标识符。与跨服务器 DML 操作相似,远程 UDR 的参量、参数和返回
值被限制只能针对内置的非不透明数据类型。(有关 GBase 8s 在跨服务器操作
中支持的数据类型的列表,请参阅跨数据库事务中的数据类型。)
只能在下列语句中引用远程数据库。有关这些跨本地服务器的数据库或跨数据库
服务器的语句中的支持的信息,请参阅 GBase 8s SQL 教程指南。

CREATE DATABASE

CREATE SYNONYM

CREATE VIEW

DATABASE

DELETE

EXECUTE FUNCTION

EXECUTE PROCEDURE

INFO

INSERT

LOAD

LOCK TABLE

SELECT

UNLOAD

UNLOCK TABLE

UPDATE
如果数据库服务器的名称是分隔标识符,或者如果它包含大写字母,则该数据库
服务器不能参与分布式 DML 操作。要避免此限制,在声明数据库服务器的名称
或别名时,请仅使用不包含大写字母的未限制名称。
例程重载以及例程签名
因为例程重载,用户定义的例程的名称对于数据库不必唯一。只要每一个 UDR
的 routine signature 是不同的,就可以用同一名称定义多个 UDR 。
UDR 是由它们的特征符唯一标识的。 UDR 的签名包括下列几项信息:

例程类型(函数或过程)

例程的标识符

参数的基数、数据类型和顺序

在兼容 ANSI 的数据库中的所有者名称

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1611
对于任何给定的 UDR,例程签名中至少必须有一项在所有在数据库中注册的
UDR 中是唯一的。
在不兼容 ANSI 的数据库中,除非在 sysdbopen( ) 和 sysdbclose( ) 例程的特殊
情况下,否则具有不同所有者的两个例程不能拥有相同的签名。有关这些会话配
置例程的所有者在定义这些例程的数据库连接或断开连接时影响的信息,请参阅
IFX_REPLACE_MODULE 函数。
指定一个已有的 UDR
当引用现有的 UDR 时,如果所使用的名称不能唯一地标识 UDR ,那么您还必
须在 UDR 名称后面,以 UDR 创建时声明的相同顺序,指定参数数据类型。然
后 GBase 8s 使用例程解析规则来识别 UDR 实例以进行修改、删除或执行。如
果在 UDR 创建是已经为它声明了一个名称,则也可以选择指定它的 specific
name。具体名称描述在专用名这个部分中。有关例程解析的更多信息,请参阅比
较参量和参数列表和 GBase 8s 用户定义的例程和数据类型开发者指南 。
由 UDR 创建的对象的所有者
当在所有者特权的 UDR 的 DDL 已经创建了新数据库对象时,例程所有者(而
不是执行它的用户,如果该用户不是例程的所有者)成为新数据库对象的所有
者。但是,对于 DBA 特权的 UDR ,执行例程的用户(以及必须具有 DBA 特
权的用户)将成为 UDR 创建的任何对象的所有者。

函数说明
返回g1 与g2 两个图对象的交集。
返回值类型:GEOMETRY 类型的对象。
示例:
gbase> SELECT TO_GHAR
GB_Intersection(GB_GeometryFromChar
('MULTIPOINT (50 100, 50 200)'), GB_GeometryFromChar ('Point (50
100)')) from dual;
+------------------------------------------------------------------------------------------+
| TO_GHAR
GB_Intersection(GB_GeometryFromChar ('MULTIPOINT (50
100, 50 200)'), GB_GeometryFromChar ('Point (50 100)')) |
+------------------------------------------------------------------------------------------+
|
POINT(50 100)
|
+------------------------------------------------------------------------------------------+
1 row in set

在同步工具的conf 目录下新增了一个配置文件,用于配置全量转增量功
能,文件名为:config_full_increment.properties。
配置文件说明:
[common]
#当同步工具中配置的主键有null值时,此参数配置了批量去重操作的每批的数据量
null_pks_batch_size=500
#用于检查8a kafka consumer的max_offset和commit_offset的差值的超时时间,作为
全量过程中发生的增量数据事务是否已消费完成的判断依据。当max_offset和
commit_offset无法满足条件时,已超时时间为准。
kafka_8a_consumer_timeout=180
#是否允许自动创建8a kafka consumer
kafka.consumer.enable.auto.create=true
#8a kafka consumer的id,默认为Kafka配置文件中的topic.name
kafka.consumer.id=
[export]
#数据导出类型,当前版本只支持ORATO8A
export.type=ORATO8A
#数据导出文件路径
export.file.path=/var/www/html/
#orato8a所在服务器ip
orato8a.host=192.168.7.124
#orato8a所在服务器ssh端口
orato8a.port=22
#orato8a所在服务器系统用户
orato8a.user=oracli

GBase RTSync 同步工具手册
南大通用数据技术股份有限公司
- 35 -
#orato8a所在服务器系统用户密码
orato8a.password=oracli
#orato8a在服务器上的绝对路径
orato8a.path=/home/oracli/output/
#orato8a所用参数,user、table、query、file参数不需要填写,会根据同步工具配置自
动生成,只需要填写其他参数项
orato8a.parameters=--field="@@@" --format=3 --line_separator='*|*'
#orato8a导出线程数,通过配置该参数可以启动n个orato8a实例进行导出,最大为8
export.threadNum=1
[import]
#数据导入类型,当前版本只支持GCLUSTER
import.type=GCLUSTER
#数据导入列分隔符
import.delimiter=@@@
#数据导入出现错误数据时是否退出
import.isErrorExit=true
#数据导入文件路径
import.file.Path=http://oracle:oracle@192.168.7.124/
#数据导入文件字符集
import.encode=utf8
#gcluster导入参数,MAX_BAD_RECORDS和FIELDS参数的TABLE_FIELDS、
TERMINATED BY
两个子参数不需要填写,同步工具会根据配置自动生成,只需要填写其他参数项
gcluster.parameters= DATA_FORMAT 3 LINES TERMINATED BY '*|*' DATETIME FORMAT
'%Y-%m-%d %H:%i:%s.%f'
#load加载数据到8a线程数,通过配置该参数可以启动n个连接进行load加载,最大为8
import.threadNum=1
注意:导出参数中的列分隔符、行分隔符、format 参数需要与导入参数中
的对应参数项一致。