一、数据库搭建
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 'x.x.x.x', 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扩展并使用操作完毕,希望能够对您有所帮助!