Greenplum 4.xバージョンdblinkの使用
3955 ワード
概要
greenplum 4.3.8.0および4.3.9.0のバージョンはdblinkを持っていませんが、5.0 betaはselect version()を持っていて、postgresql 8.3に基づいていることがわかります.23開発のgreenplumなのでpostgresql 8.3をダウンロードします.23バージョンのソースコードでdblinkをコンパイルhttps://www.postgresql.org/ftp/source/v8.3.23/
コンパイル
greenplumをインストールしたサーバで、masterノードでソースコードを解凍します.
修正
コンパイル(root)
バージョンのコピー
dblinkのインストール
dblinkのインストールはデータベースベースで、例えば次のような操作です.
実行後、db_linデータベースでは、他のデータベースのデータにアクセスできます.db 1で他のデータベースにアクセスできるようにするには、次の
テストの使用
環境の紹介
db_linにdblink:
操作(db_lin上)
greenplum 4.3.8.0および4.3.9.0のバージョンはdblinkを持っていませんが、5.0 betaは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
で使用する2つのファイルを取得します.dblink.so
dblink.sql
バージョンのコピー
dblink.so
をgreenplumクラスタのすべてのマシンの/usr/local/gpdb/lib/postgresql
ディレクトリにコピーし、注意chown gpadmin:gpadmin dblink.so
をmaster上の便利な位置にコピーすればよい.dblinkのインストール
dblinkのインストールはデータベースベースで、例えば次のような操作です.
psql -f dblink.sql db_lin
実行後、db_linデータベースでは、他のデータベースのデータにアクセスできます.db 1で他のデータベースにアクセスできるようにするには、次の
dblink.sql
を実行する必要があります.テストの使用
環境の紹介
db_linにdblink:
psql -f dblink.sql db1
をインストールするdb 1には、次のようなテーブル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)