PG远程执行工具 dblink

本文介绍如何在PostgreSQL中使用dblink插件执行远程数据库查询及修改操作,包括dblink的编译安装、扩展创建、查询执行及通过持久连接执行数据库修改命令的全过程。

概述

dblink - 在远程数据库中执行查询,能够在一个数据库中操作另外一个远程的数据库。
dblink在远程数据库中执行查询(通常是 SELECT,但它可以是返回行的任何SQL语句)。
当给出两个文本参数时,第一个参数首先被查找为持久连接的名称; 如果找到,则在该连接上执行该命令。如果未找到,则将第一个参数视为连接信息字符串 dblink_connect,并且仅在此命令的持续时间内进行指示的连接。

准备工作

  1. 源码包自带dblink插件,但是需要自己编译安装使用。使用dblink,在安装PostgreSQL的时候,必须把的位于PostgreSQL源码包下的contrib\dblink源码编译安装,
cd contrib/dblink
make
make install

之后可以看到在$PGHOME下的lib下就有个dblink.so文件

  1. 创建拓展
   create extention dblink;

扩展dblink功能(其实这个操作是创建dblink的相关函数)

查询的操作

示例:取得postgres表的tb1的数据

select * from
dblink('dbname=postgres host=localhost port=5432 user=postgres passwd=123456'::text,'select * from tb1'::text)t
(id integer,name character varying));

如果认为每次查询都要写dblink的一堆信息很麻烦的话,可以在当期库中建一个view来解决。

CREATE VIEW view_remote_tb1 AS
select * from
dblink('dbname=postgres host=localhost port=5432 user=postgres passwd=123456'::text,'select * from tb1'::text)t
(id integer,name character varying));

然后就可以从这个view中查询数据了。

SELECT * FROM remote_people_user_name;

远端执行数据库修改命令

1.先执行dblink_connect保持连接

SELECT dblink_connect('myconn','hostaddr=127.0.0.1 port=5432 dbname=postgres user=postgres password=123456');

2.执行BEGIN命令

SELECT dblink_exec('myconn', 'BEGIN');

3.执行数据操作(update,insert,create等命令)

SELECT dblink_exec('myconn', 'insert into tb1 select generate_series(10,20),''hello''');

4.执行事务提交

SELECT dblink_exec('myconn', 'COMMIT');

5.解除连接

SELECT dblink_disconnect('myconn');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值