金仓数据库dblink扩展的使用
关键字:
dblink、外部表、kingbaseES、oracle 、人大金仓、KingbaseES
dblink介绍
dblink是KingbaseES的一个扩展插件,支持在一个数据库会话中连接到其它KingbaseES数据库模块,其功能同kingbase_fdw相同。
dblink的使用步骤
使用dblink主要包括以下步骤:
- 加载dblink插件;
- 建立一个到远程KES数据库的持久连接,dblink_connect()或dblink_connect_u();
- 进行SQL操作;dblink()可执行SELECT语句,dblink_exec()可执行DML语句;
- 关闭到远程数据的持久连接dblink_disconnect()。
dblink使用展示
dblink插件提供了诸多的接口供用户使用,本文先简单介绍dblink插件的基本使用,展示使用dblink访问其它KingbaseES数据库的基本用法。dblink使用时,需要被连接的远程KES数据库用户使用密码登录。
- KES中加载dblink插件
同其它插件的加载方式相同,使用create extension语句加载dblink插件:
create extension dblink; |
执行完成后,可输入 \dx查看插件是否加载成功。
- 建立一个连接
提供了两个接口用于建立一个远程数据库的持久连接,主动关闭或会话结束关闭
- dblink_connect()
dblink_connect(text connstr) return text dblink_connect(text connname, text connstr) return text |
- dblink_connect_u()
dblink_connect_u(text connstr) return text dblink_connect_u(text connname, text connstr) return text |
dblink_connect() 和 dblink_connect_u()功能基本相同,前者只允许超级用户创建无口令认证连接,后者则可允许任意用户创建无口令认证连接。
参数介绍:
- connname:连接的名字,赋予建立的连接一个名称;当该参数被忽略时,会建立一个未命名的连接并替换掉任何现有的未命名连接,dblink只允许同时存在一个未命名连接,考虑到后续使用,推荐不忽略该参数。
- connstr:有两种选择。
- libpq风格的连接信息串,例如hostaddr=127.0.0.1 port=55553 dbname=test user=u01 password=u01;
- 外部服务器的名称,外部服务器推荐使用外部数据包装器dblink_fdw,以及create server和create user mapping创建的外部服务器。
- 使用dblink访问其它KES数据库
- dblink()执行一个查询语句(SELECT语句或者任何返回行的语句)
dblink(text connname, text sql [, bool fail_on_error]) return 结果集 dblink(text connstr, text sql [, bool fail_on_error]) return 结果集 dblink(text sql [, bool fail_on_error]) return 结果集 |
- dblink_exec()执行DML语句
dblink_exec(text connname, text sql [, bool fail_on_error]) return text dblink_exec(text connstr, text sql [, bool fail_on_error]) return text dblink_exec(text sql [, bool fail_on_error]) return text |
参数介绍:
- connname:dblink_connect()建立的连接的名称,当忽略该选项时,使用已存在的未命名连接。
- connstr:同dblink_connect()中一样,可以是libpg风格的连接信息串,也可以是已创建的外部服务器。
- sql:希望在远程数据库中执行的SQL语句。
- fail_on_error:默认为真,连接的远程端抛出的错误也会导致本地抛出错误;如果为假,远程错误只在本地被报告为一个NOTICE,并且该函数的返回值被设置为ERROR。
- 关闭dblink建立的远程连接
可以调用dblink_disconnect()函数关闭,也可以退出当前会话自动关闭。
dblink_disconnect() return text dblink_disconnect(test connname) return text |
- dblink_disconnect():关闭一个之前被打开的未命名连接;
- dblink_disconnect(test connname):指定关闭已命名的连接。
参考资料
KingbaseES产品手册




