在Greenplum 4.x版本使用dblink

来源:互联网 发布:网络免费打电话下载 编辑:程序博客网 时间:2024/06/06 08:50

简介

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 /hometar jxf postgresql-8.3.23.tar.bz2cd /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.shcd /home/postgresql-8.3.23/contrib/dblinkmake USE_PGXS=1 install

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

dblink.sodblink.sql

拷贝版本

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

安装dblink

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 1db_lin=# SELECT * from t2; a  ---- 11(1 row)
原创粉丝点击