postgres使用dblink

在oracle中,经常会使用dblink将一些线上的数据导入到开发库中定位问题。

postgresql中也可以使用dblink。

下面是网上的资料:

        1、如何在postgresql中建立dblink?
        2、建立成功后,如何使用dblink?
        3、postgresql中的dblink和oracle中的dblink有什么区别?

下面是解决的方案:

问题1:

# useradd postgre (自动建立 postgre 组)

解压到 /usr/local/src:
# tar xvfz postgresql-7.1.3.tar.gz
# cd postgresql-7.1.3
# ./configure --prefix=/usr/local/pgsql
# make
# make install
# chown -R postgre.postgre /usr/local/pgsql

# vi ~postgre/.bash_profile

添加:

PGLIB=/usr/local/pgsql/lib
PGDATA=$HOME/data
PATH=$PATH:/usr/local/pgsql/bin
MANPATH=$MANPATH:/usr/local/pgsql/man
export PGLIB PGDATA PATH MANPATH

以 postgres 用户登录,
# su - postgre
建立数据库目录:
$ mkdir data

启动数据库引擎:
[postgre@www postgre]$ initdb
[postgre@www postgre]$ postmaster -i -D ~/data &
这样 PostgreSQL 使用位于 /usr/local/pgsql/data 的数据库,允许 Internet 用户的连接( -i ) ,并在后台运行。
安装到这步时,数据库在运行

建立数据库和表
$createdb mydb

然后进入/contrib/dblink
make /make install
//成功之后 ,启动pg_ctl restart
执行
psql -f dblink.sql -d 数据库 -U 用户名



 
问题2:
pgsql=# select dblink_connect('host=localhost user=pgsql password=');
dblink_connect 
----------------
OK
(1 row)
这个函数用来建立到远程数据库的连接。

我们可以像这样想远程的数据库中insert一条记录:
pgsql=# select dblink_exec('insert into student values(\'linux_prog\',\'12345\')');  
  dblink_exec  
-------------------
INSERT 22516276 1
(1 row)

现在我们检索我们刚才insert的记录:
pgsql=# select * from dblink('select * from student') as student(name varchar(100),pass varchar(100)); 
  name | pass  
------------+-------
linux_prog | 12345
(1 row)

怎么样?刚才insert的记录已经在里面了。


问题3
我用后的感觉就是
postgresql比orcale权限设置更为严格..

原文地址:https://www.cnblogs.com/highriver/p/2216605.html