简介
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
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)