参考官网文档:15. dblink — KingbaseES产品手册
业务场景:
现有数据库及用户:
db_a,u_a
db_b,u_b
想要在db_a连接中,跨库对db_b中的表进行查询等操作
使用超级用户相关的函数操作这里不再赘述,以下大部分操作都是用普通用户u_a进行操作的,比如我使用的dblink_connect_u而不是dblink_connect,这时就需要先给u_a授权
实现步骤:
1、使用超级用户加载dblink插件
CREATE EXTENSION dblink;
2、使用超级用户给u_a授予dblink_connect_u的EXECUTE权限,注意dblink_connect_u的参数列表,按实际需求来
GRANT EXECUTE ON function dblink_connect_u(text,text) TO "u_a";
3、使用u_a,连接db_a,创建一个到远程数据库db_b的持久连接
SELECT dblink_connect_u('myconn_db_b', 'hostaddr=xxx.xxx.xxx.xxx port=54321 dbname=db_b user=u_b password=密码');
4、操作db_b的表A
查询数据:
SELECT * FROM dblink('myconn_db_b','SELECT id,code FROM 表A') AS t(id text, code text) WHERE code LIKE 'xx%';
使用dblink_exec在远程数据库中执行插入数据的命令:
SELECT dblink_exec('myconn_db_b', 'INSERT INTO 表A(id, code) VALUES(''id值'',''code值'');');