在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权限设置更为严格..