KingbaseES DBLink 扩展介绍
DBLink 扩展插件功能与 Kingbase_FDW 类似,用于远程访问KingbaseES 数据库。相比于Kingbase_FDW,DBLink 功能更强大,可以执行DML,还可以通过 begin ... end 完成事务操作。以下介绍dblink扩展的使用。
一、测试环境
| 本地数据库 | 远程数据库 | |
| IP | 192.168.237.42 | 192.168.237.43 |
| 用户 | user_local | user_remote |
1、本地数据库创建用户
test=# create role user_local with login;
CREATE ROLE
test=# alter role user_local with password 'user_local';
ALTER ROLE
test=# create schema user_local authorization user_local;
CREATE SCHEMA
2、远程数据库创建用户与测试表
test=# create role user_remote with login;
CREATE ROLE
test=# alter role user_remote with password 'user_remote';
ALTER ROLE
test=# create schema user_remote authorization user_remote;
CREATE SCHEMA test=# \c test user_remote
You are now connected to database "test" as user "user_remote".
test=> create table t1(id integer,name char(9));
CREATE TABLE
test=> insert into t1 values(1,'a');
INSERT 0 1
test=> insert into t1 values(2,'b');
INSERT 0 1
二、创建扩展插件
1、创建扩展
test=# create extension dblink;
CREATE EXTENSION 创建后,pg_foreign_data_wrapper 会新增一条记录。
test=# select * from pg_foreign_data_wrapper where fdwname='dblink_fdw';
oid | fdwname | fdwowner | fdwhandler | fdwvalidator | fdwacl | fdwoptions
-------+------------+----------+------------+--------------+--------+------------
16466 | dblink_fdw | 10 | 0 | 16465 | |
2、创建Server
create server dblink_to43 foreign data wrapper dblink_fdw options (hostaddr '192.168.237.43' , dbname 'test'); test=# select * from pg_foreign_server where srvname='dblink_to43';
oid | srvname | srvowner | srvfdw | srvtype | srvversion | srvacl | srvoptions
-------+-------------+----------+--------+---------+------------+--------+---------------------------------------
24693 | dblink_to43 | 10 | 24692 | | | | {hostaddr=192.168.237.43,dbname=test}
(1 row) grant usage on foreign server dblink_to43 to user_local;
3、创建用户映射
create user mapping for user_local server dblink_to43 options (user 'user_remote' , password 'user_remote'); test=# select * from pg_user_mappings;
umid | srvid | srvname | umuser | usename | umoptions
-------+-------+-------------+--------+------------+-----------------------------------------
24694 | 24693 | dblink_to43 | 24645 | user_local | {user=user_remote,password=user_remote}
(1 row)
三、测试数据库访问
1、dblink 连接
test=> \c test user_local
You are now connected to database "test" as user "user_local".
test=> select dblink_connect('conn01','dblink_to43') ;
dblink_connect
----------------
OK
(1 row) test=> select * from sys_database_link;
oid | lnkname | lnknamespace | lnkuser | lnkowner | lnkserver | dbtype | lnkoptions | lnkcreated
-----+---------+--------------+---------+----------+-----------+--------+------------+------------
(0 rows) test=> select * from all_db_links;
owner | db_link | username | host | created
-------+---------+----------+------+---------
(0 rows)
以dblink_connect 方式连接,采用的是长连接,直到显示关闭,或者数据库会话结束。
Note:dblink 信息在 sys_database_link 是看不到的,sys_database_link 是配合 kdb_database_link 插件使用。
2、数据访问
test=> select * from dblink('conn01','select * from t1');
id | name
----+-----------
1 | a
2 | b
(2 rows)
test=> select dblink_exec('conn01','insert into t1 values(1,''a'')');
dblink_exec
-------------
INSERT 0 1
(1 row)
test=> select * from dblink_exec('conn01','insert into t1 values(1,''a'')');
dblink_exec
-------------
INSERT 0 1
(1 row)
3、事务操作
test=> SELECT dblink_exec('conn01', 'BEGIN');
dblink_exec
-------------
BEGIN
(1 row)
test=> select dblink_exec('conn01','insert into t1 values(1,''a'')');
dblink_exec
-------------
INSERT 0 1
(1 row)
test=> SELECT dblink_exec('conn01', 'COMMIT');
dblink_exec
-------------
COMMIT
(1 row)
4、断开连接
test=> SELECT dblink_disconnect('conn01');
dblink_disconnect
-------------------
OK
(1 row)
四、其他注意点
以上例子的是用dblink_connect 创建连接,是长连接。也可以在执行SQL的同时创建连接:
test=> select * from dblink('dbname=test host=192.168.237.43 port=54321 user=user_remote password=user_remote','select * from t1');
还有,dblink 实际是数据库的连接,前提是目标端的 sys_hba.conf 必须支持连接。
KingbaseES DBLink 扩展介绍的更多相关文章
- Unity 3D编辑器扩展介绍、教程(二) —— 创建窗口
Unity编辑器扩展教程(二) 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 一 Brief Introd ...
- KingbaseES interval 分区表介绍
KingbaseES从V008R006C005B0041版本开始支持Oracle的Interval分区表功能. Interval分区表是一种特殊的范围分区表.当执行INSERT或者UPDATE时,若数 ...
- KingbaseES 全文检索功能介绍
KingbaseES 内置的缺省的分词解析器采用空格分词,因为中文的词语之间没有空格分割,所以这种方法并不适用于中文.要支持中文的全文检索需要额外的中文分词插件:zhparser and sys_ji ...
- KingbaseES sys_prewarm 扩展
Oracle 在查询数据 可以通过cache hint 所访问的数据cache 到数据库buffer,对于KingbaseES,如何将数据加载到cache 了?sys_prewarm 扩展插件可以实现 ...
- OC中类的扩展介绍
对OC类的扩展总结如下: 共有4个: 1.子类 subClass 作用:可以使用类的继承来增添父类的变量和方法. 写法:在.h文件中 @interface Student : Person 2.分类 ...
- Unity 3D编辑器扩展介绍、教程(一) —— 创建菜单项
Unity编辑器扩展教程 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 一 Brief Introduct ...
- VS功能扩展--扩展介绍
使用Eclipse的朋友都知道Eclipse是一个完全可扩展的IDE,那么在windows程序开发时,我们常使用的IDE(Visual studio)是否具有功能的扩展性呢?毫无疑问,回答是肯定的.我 ...
- KingbaseES 中 JSON 介绍
KingbaseES支持JSON和JSONB.这两种类型在使用上几乎完全一致,主要区别是 JSON类型把输入的数据原封不动的存放到数据库中.JSONB类型在存放时把JSON解析成二进制格式. JSON ...
- KingbaseES ksqlrc文件介绍
ksqlrc文件作用 ksql在连接到数据库后但在接收正常的命令之前,会尝试读取并执行该文件中的命令,如果加上-X参数,则跳过该文件. 系统级的启动文件是ksqlrc,文件在安装好的KingbaseE ...
随机推荐
- Python快速下载商品数据,并连接数据库,保存数据
开发环境 python 3.8 pycharm 2021.2 专业版 代码实现 发送请求 获取数据 解析数据(筛选数据) 保存数据 连接数据库 开始代码 请求数据 # 伪装 headers = { ' ...
- 全国降雨侵蚀力因子R值
数据下载链接:百度云下载链接 降雨侵蚀力因子其实是反应降雨对土壤侵蚀的潜在能力,就是降雨的冲刷对土壤的侵蚀效应. 在过去几天查阅文献资料的过程中,本人亲眼看见过的关于因子R的计算方法就超过30种 ...
- Aborted wiping of zfs_member.1 existing signature left on the device.Aborting pvcreate on /dev/sda
看意思是有什么签名在上面,创建不了逻辑卷,确认数据备份的情况下执行对应的下面命令: wipefs --all --force /dev/sdax
- API 开发者需要避免的10个错误【翻译】
随着低代码和无代码工具的出现,构建API比以往任何时候都更简单.更快.不过因为开发简单了,开发者很容易忽略一些潜在的问题,导致整个业务的下游影响. 在设计阶段多花点时间,可以确保API真正有用.安全. ...
- day04 缓冲字符流__异常处理
缓冲字符流 缓冲字符输入流:java.io.BufferedReader 是一个高级的字符流,特点是块读文本数据,并且可以按行读取字符串. package io; import java.io.*; ...
- 爬虫部署 Gerapy 安装(centos 8)演示
一.安装 pip3 install -U gerapy 使用python3.68版本安装gerapy,报错提示:ModuleNotFoundError: No module named 'setupt ...
- 【我的面试-01】Web前端开发实习岗-面试题总结
简单开头 首先技术面试官会根据简历里所写的项目和个人掌握技术栈提问(我不知道已经改过多少次简历了,因为前期投简历是真的是沉在茫茫大海,捞漂流瓶都捞不到的那种) 我的技术栈:(Vue还在苦苦的自学当中, ...
- Mysql 数据恢复流程 基于binlog redolog undolog
注:文中有个易混淆的地方 sql事务,即每次数据库操作生成的事务,这个事务trx_id只在undolog里存储,同时undolog维护了此事务是否完成的状态. 日志持久化事务,为了保证redolog和 ...
- Informatica旗下PowerCenter的元数据库解析
因客户需求,最近重拾Informatica下的PowerCenter产品,主要研究数据血缘关系.从PowerCenter本身来看,它是一个功能非常强大,速率非常高效的一款付费的ETL工具,可以满足各种 ...
- 使用 Vagrant 在 VirtualBox 安装 Linux 虚拟机
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 目录 1. 导入 2.工具介绍 3.通过Vagrant为VirtualBox安装CentOS 7 4.总结 文章推荐: 关 ...