一、數據庫搭建
1、yum 指定目錄安裝
https://blog.csdn.net/llwy1428/article/details/105143053
2、yum 直接安裝
https://blog.csdn.net/llwy1428/article/details/102486414
3、編譯安裝
https://blog.csdn.net/llwy1428/article/details/95444151
4、PostgreSql 基本操作
https://blog.csdn.net/llwy1428/article/details/102598732
5、PostgreSql 數據庫安裝擴展
https://blog.csdn.net/llwy1428/article/details/106291669
二、安裝 FDW 擴展
1、切換用戶
[root@localhost ~]# su - postgres
-bash-4.2$ psql
2、創建數據庫 dbtest_a(數據源)、dbtest_b (目標數據庫)
postgres=# create database dbtest_a owner postgres;
postgres=# create database dbtest_b owner postgres;
3、列出已創建的數據庫
postgres=# \l
4、進入數據庫 dbtest_a (數據源)
postgres=# \c dbtest_a
You are now connected to database "dbtest_a" as user "postgres".
dbtest_a=# CREATE SCHEMA datafrom;
CREATE SCHEMA
5、查看該數據庫下所有 SCHEMA
dbtest_a=# \dn
6、在 SCHEMA datafrom 下創建兩張表
CREATE TABLE "datafrom"."user" (
"id" varchar(20) COLLATE "pg_catalog"."default" NOT NULL,
"name" varchar(50) COLLATE "pg_catalog"."default",
CONSTRAINT "user_pkey" PRIMARY KEY ("id")
)
;
ALTER TABLE "datafrom"."user"
OWNER TO "postgres";
CREATE TABLE "datafrom"."employee" (
"id" varchar(20) COLLATE "pg_catalog"."default" NOT NULL,
"name" varchar(50) COLLATE "pg_catalog"."default",
"age" varchar(2) COLLATE "pg_catalog"."default",
CONSTRAINT "employee_pkey" PRIMARY KEY ("id")
)
;
ALTER TABLE "datafrom"."employee"
OWNER TO "postgres";
7、查看已創建的表
dbtest_a=# select * from pg_tables where schemaname = 'datafrom';
8、分別在表中插入數據
INSERT INTO "datafrom"."user"("id", "name") VALUES ('1', 'System');
INSERT INTO "datafrom"."employee"("id", "name", "age") VALUES ('1', '皮迪克', '3');
9、進入數據庫 dbtest_b (目標數據庫),並創建 SCHEMA datato
postgres=# \c dbtest_b
You are now connected to database "dbtest_b" as user "postgres".
dbtest_b=# CREATE SCHEMA datato;
CREATE SCHEMA
10、查看已創建的 SCHEMA
11、在數據庫 dbtest_b(目標數據庫) 安裝 FDW 擴展
dbtest_b=# CREATE EXTENSION "postgres_fdw";
CREATE EXTENSION
12、在目標數據庫 dbtest_b 中,給你現在登陸的賬號賦予權限
dbtest_b=# grant usage on foreign data wrapper postgres_fdw to postgres;
GRANT
13、跟來源數據庫 dbtest_a 建立連接
dbtest_b=# CREATE SERVER dbfromserver FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'localhost', port '5432', dbname 'dbtest_a');
CREATE SERVER
說明:“dbfromserver ”是我給來源數據庫服務起的名字
14、給現在你登陸的用戶創建來源數據庫 dbtest_a 關聯; options相當於給與系統後門
dbtest_b=# create user mapping for postgres server dbfromserver options(user 'postgres',password '123456');
CREATE USER MAPPING
說明:“dbfromserver ”是我給來源數據庫服務起的名字;“123456” 是數據源數據庫的密碼。
15、在來源數據庫下schema 導入目標數據庫下的schema
dbtest_b=# import foreign schema "datafrom" from server dbfromserver into "datato";
IMPORT FOREIGN SCHEMA
16、選擇 SCHEMA datato 查看其下的所有表
17、查詢數據:
可以看到 dbtest_a 數據庫中 SCHEMA datafrom 中的所有表及數據被映射到了數據庫 dbtest_b 下的 SCHEMA datato 中。
至此,Centos7 PostgreSql 數據庫使用FDW擴展並使用操作完畢,希望能夠對您有所幫助!