在Greenplum 4.x版本使用dblink

简介

greenplum 4.3.8.0以及4.3.9.0的版本都没有带dblink,但是5.0beta带了
通过select version(),可以看到是基于postgresql 8.3.23开发的greenplum,所以下载postgresql 8.3.23版本源码,用于编译dblink
https://www.postgresql.org/ftp/source/v8.3.23/

编译

在安装好greenplum的服务器上,master节点上
解压源码

cd /home
tar jxf postgresql-8.3.23.tar.bz2
cd /home/postgresql-8.3.23/contrib/dblink

修改/home/postgresql-8.3.23/contrib/dblink/Makefile
将flags修改为如下,增加-w

PG_CPPFLAGS = -I$(libpq_srcdir) -w

编译(root)

source /usr/local/gpdb/greenplum_path.sh
cd /home/postgresql-8.3.23/contrib/dblink
make USE_PGXS=1 install

/home/postgresql-8.3.23/contrib/dblink得到两个需要用的文件:

dblink.so
dblink.sql

拷贝版本

dblink.so拷贝到greenplum集群所有机器的/usr/local/gpdb/lib/postgresql目录下,注意chown gpadmin:gpadmin dblink.so
dblink.sql拷贝到master上方便的位置即可,我们操作的时候需要用

dblink的安装是基于数据库的,譬如如下操作

psql -f dblink.sql db_lin

执行后,在db_lin数据库中,就可以访问其他的数据库的数据了。
如果想要在db1中可以访问其他数据库,需要执行下psql -f dblink.sql db1

测试使用

环境介绍

在db_lin中安装dblink:psql -f dblink.sql db_lin
在db1中有一个表a,内容如下:

db1=# SELECT * from a;
 a  
----
 11
(1 row)

操作(在db_lin上)

db_lin=# SELECT dblink_connect('con1', 'dbname=db1');
 dblink_connect 
----------------
 OK
(1 row)

db_lin=# SELECT * from dblink('con1', 'select * from a') as t5(a int) limit 5;
 a  
----
 11
(1 row)

db_lin=# SELECT * from dblink('dbname=db1', 'select * from a') as t5(a int) limit 5;
 a  
----
 11
(1 row)

db_lin=# INSERT into t2 SELECT * from dblink('dbname=db1', 'select * from a') as t5(i int);
INSERT 0 1

db_lin=# SELECT * from t2;
 a  
----
 11
(1 row)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值