GBase 8a数据库集群透明网关与DBLINK-数据推送和直通模式

B站影视 韩国电影 2025-06-03 15:09 1

摘要:支持insert …select语句的目标表为dblink远端表,支持通过 insert …select 语句将本地数据推送到远端;

数据推送和直通模式

支持insert …select语句的目标表为dblink远端表,支持通过 insert …select 语句将本地数据推送到远端;

本地数据推送到远端oracle表时需注意:oracle字符类型是字节为单位,而gbase字符类型是字符为单位,所以gbase源表和oracle目标表含有相同类型字段char(255)时,该字段的数据推送到oracle可能会出现插入时越界情况;

同时支持passthrough 直通模式,即GCluster不对指定的SQL做语法解析,请求网关直接转发指定的SQL到远端数据库执行,通过 passthrough 模式可实现对远端表进行 insert…values,delete, update 等操作。


数据推送SQL语句

语法与insert into…select..语句相同,支持目标表为dblink远端表,如:

insert into t1@testlink select a, b from t1;

支持指定目标列,如:

insert into t1@testlink(a, b) select a, b from t1;

前提条件:dblink对象对应的网关中的数据源配置的用户需有对目标表的insert 权限。

只支持自动提交模式,不支持分布式事务,若当前执行gcluster的session 状态为非自动提交模式将报错:

Can not join the distributed transaction in session

需保证一条推送SQL语句的原子性,数据要么全部成功推送到远端,要么全部失败。


注意:

GBase 8a MPP Cluster的空串数据通过dblink推送至ORACLE,ORACLE存储为NULL,即ORACLE不区分空串和NULL,用 is null可以查询;

GBase 8a MPP Cluster则区分空串和NULL。


直通模式SQL 语句

请求网关直接转发sql语句到dblink对象对应的远端数据库执行。


语法:

passthrough link DBLINK_NAME using ‘SQL_STATEMENT’;


参数:

DBLINK_NAME为dbink对象的名称;

SQL_STATEMENT为SQL语句,即远端数据库执行的SQL语句;

支持的SQL语句,除以下支持的SQL类型外,其它类型的SQL将报错:

insert into … values…
insert into …select ….
delete
update
truncate
merge
create
drop


示例:


约束与限制:

dblink对象对应的网关中的数据源配置的用户需有相应的 SQL执行权限;

只支持自动提交模式。若当前执行passthrough命令的gclusterd的session 状态为非自动提交模式将报错:

Can not join the distributed transaction in session

不支持 sql_statement 前面有注释。

来源:GBASE南大通用

相关推荐