GPDB使用dblik

dblink是一个PostgreSQL contrib模块,允许对另一个数据库执行查询。当前PostgreSQL的模型需要用户连接到一个特定的数据库服务器上。因此,它本身是不可能对另一个数据库执行SQL查询。
通常我们不鼓励使用dblink查询远程数据库。我们总是建议用户使用模式。但是在某些场景下,还是有一些用途的。

1.检查是否安装了dblink

  gpadmin@linux-hd1:~> pg_config --pkglibdir
  --如果安装,检查seg节点是否安装了
  gpadmin@linux-hd1:~> gpssh -f all_host 'll /home/greenplum-db/lib/postgresql/dblink.so'

这里存在三种情况
(1)master和segment都没安装,正常安装
(2)master有但是 segment没有,将主节点文件传输到 segment节点
(3)master没有但是segment有,建议重新安装

2.安装
2.1下载对应文件:
github上有现成的文件,https://github.com/greenplum-db/gpdb/tree/master/contrib/dblink 下载gpdb源文件
2.2 上传contrib目录到master,并设置权限为gpadmin所有
2.3 编译生成
vi contrib/dblink/Makefile在后面增加-w参数

      PG_CPPFLAGS = -I$(libpq_srcdir) -w
      make USE_PGXS=1 install

2.4 生成的dblink.so文件在lib/postgresql下,将此文件copy到segment

3.使用
在contrib/dblink目录下

  gpadmin@linux-hd1:~> psql -f dblink.sql my_db生成一系列的函数

1.创建连接
首先登陆源库my_db

 my_db=#select dblink_connect('连接符名称','dbname=other_db');
   注意这里的写法:dbname=other_db:是数据库连接串。本地可以这样写,远程得写成hostaddr=***.***.***.*** port=5432 dbname=*** user=*** password=***

2.使用

  my_db=# select * from dblink('myconn','select * from public.a') AS t1(v varchar,v2 varchar); 
  my_db=# insert into public.ab select * from dblink('dbname=bi','select * from public.a') AS t1(v1 varchar);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值