在Greenplum 4.x版本使用dblink

前端之家收集整理的这篇文章主要介绍了在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

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)

猜你在找的Oracle相关文章