在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使用權限設定更為嚴格..