1. 程式人生 > >pgsql使用積累系列_pg資料庫外掛安裝(以建立外部表連線為例)

pgsql使用積累系列_pg資料庫外掛安裝(以建立外部表連線為例)

pg資料庫外掛安裝看這一篇就足夠了

寫在前面pgsql的外部表連線就是dblink,通過不同的外部連線外掛可以實現pg庫操作其他資料庫(pg資料庫或者mysql等其他型別的資料庫)。這裡以外部連線其他pg資料庫和mysql為例,聊聊pg資料庫外掛安裝。

1. 安裝postgresql(10.1)

參考連結:postgresql10安裝

2. 檢視可安裝外掛

yum search postgresql

2.1 查詢源並安裝源。

不知道自己安裝的外掛是誰提供的就把下面查到的兩個外掛都安裝了(外部連線是由貢獻者提供的外掛,只要安裝後者就可以了),我理解這兩個就是外掛包,安裝其他外掛會依賴於這兩個外掛

yum search postgresql | grep contrib 
#yum -y install postgresql-contrib.x86_64 安裝官方提供的外掛模組,(安裝pg資料庫的時候預設已安裝?)
#yum -y install postgresql10-contrib.x86_64 安裝由貢獻者提供或者釋出的模組

2.2 查詢具體功能外掛如外部連線外掛並安裝

yum search postgresql | grep fdw
yum -y install *fdw* #最好還是根據查出來的外掛安裝 例如 yum -y install mysql_fdw_10.x86_64

2.3 載入外掛物件到資料庫裡

(實在不知道到該怎麼描述下面這件事,就用官網的吧:create extension command loads the objects into your database)

su postgres
psql "host=127.0.0.1 port=5432 dbname=fdw_ user=admin password=123456" 
或者psql -d fdw_ -U admin(pg_hba.conf裡面要配置成trust。md5因為沒有密碼會報使用者認證失敗)
create extension mysql_fdw;
create extension postgres_fdw;

檢視外掛安裝情況

select * from pg_available_extensions where name like '%fdw%';

如上圖可以查到所有可以安裝的外掛及版本號,installed_version值不為空說明已經載入到資料庫裡了(只是載入了外掛的資料庫installed_version是有值的,其他沒有載入的資料庫是沒有值的)

下面是使用分別使用mysql_fdw和postgres_fdw外掛連線mysql資料庫和另外一個pgsql資料庫,大環境是windows安裝被連線的pg庫和mysql庫,虛擬機器centos7系統安裝的連線外部的pgsql測試資料庫。引數比較好理解就不做解釋了,直接上demo,其他資料庫外掛使用方法可以自行到pg第三方外掛檢視,

4. mysql 外部連線(fdw)

4.1 建立server物件

create server localdb_mysql
     foreign data wrapper mysql_fdw
     options (host '192.168.99.248', port '3307');

4.2 建立使用者對映關係

create user mapping for admin
    server localdb_mysql 
    options (username 'admin', password '123456');

4.3 建立外部表(代理表)

外部表要與遠端連線表結構一致
create foreign table mysql_python_employee (
    first_name varchar(20),
        last_name varchar(20),
        age int4,
        sex varchar(1),
        income float)
server localdb_mysql
options (dbname 'summer_sys', table_name 'python_employee');

4.4 測試

select * from mysql_python_employee;

-- 登入mysql建立唯一索引,否則不能進行DML操作。create unique index python_employee_idx on python_employee(first_name);
insert into mysql_python_employee ("first_name", "last_name", "age", "sex", "income") VALUES ('zhang', 'san', '20', 'F', '4000');

 

5. pgsql 外部連線(fdw)

5.1 建立server物件

create server localdb_pgsql
        foreign data wrapper postgres_fdw
        options (host '192.168.99.248', port '5433', dbname 'pgtestdb');

5.2 建立使用者對映關係

create user mapping for admin
        server localdb_pgsql
        options (user 'admin', password '123456');

5.3 建立外部表(代理表)

create foreign table pgsql_check_ (
        c_ms integer,
        c_pg integer
)
server localdb_pgsql
options (schema_name 'public', table_name 'check_');

select * from pgsql_check_;

insert into pgsql_check_("c_ms", "c_pg") values ('2', '19');

總結:本文旨在通過外部連線外掛實現pgsql連線其他資料庫,來說明pgsql擴充套件功能使用步驟。