PostgreSQL10 Centos7 创建dblink,extension,物化视图,外部表

	公司有个项目需要把原来的MySQL 数据库 换成 Postgre数据库,做一下记录。

环境介绍

服务操作系统是Centos7,数据库的版本是Postgesql10

使用过程

在使用mysql数据库时,使用的是kitchen工具链接两端数据,进行数据同步。
换到postgre数据库,决定不在使用kitchen工具,转成使用数据库自带的一些功能实现
抽取外部数据使用dblink和extension

1. 使用dblink:
切换到centos用户postgres,执行: psql

[root@Test ~]# su postgres
[postgres@Test root]$ psql
could not change directory to “/root”: Permission denied
psql (10.7)
Type “help” for help.
postgres=#

创建dblink

postgres=# create extension dblink;
CREATE EXTENSION
postgres=# select dblink_connect(‘dblink_201’,‘dbname=dlprd host=10.199.13.201 port=5432 user=***** password=******’);
dblink_connect
OK(1row)
select * from dblink(‘dblink_201’,‘select name1,bismt from spo.v_sap_spo_ekko2 where bismt=’‘5.1113.0398’’’) as t1 (name1 varchar(255),bismt varchar(255));

每次使用dblink查询比较麻烦,可以创建视图:

postgres=# create or replace view z_material_view_sap_source as select * from dblink(‘dblink_201’,‘select bismt,matnr,maktx,mstae,mtstb,pp,laeda,gg,meins,bstme from spo.v_sap_spo_mara’) as t1 (bismt varchar(255),matnr varchar(64),maktx varchar(255),mstae varchar(64),mtstb varchar(64),pp varchar(32),laeda varchar(32),gg varchar(32),meins varchar(32),bstme varchar(32));

根据视图创建物化视图,物化视图的增量更新

postgres=# create materialized view z_mv_material as select * from z_material_view_sap_source with no data;

postgres=# refresh materialized view z_mv_material with data;

创建唯一索引

postgres=# create unique index idx_mv_material on z_mv_material(matnr);

刷新物化视图

postgres=# refresh materialized view concurrently z_mv_material with data;

增量刷新能否刷新判断的是物化视图上有没有唯一索引,并不关注基表上有没有唯一索引

2. 使用extension:

postgres=# create extension postgres_fdw;
CREATE EXTENSION

创建server

postgres=# create server pg_201 foreign data wrapper postgres_fdw options(hostaddr ‘192.168.100.154’, dbname ‘postgres’, port ‘5432’);
CREATE SERVER

创建user mapping

postgres=# create user mapping for postgres server pg154 options(user ‘postgres’, password ‘postgres’);
CREATE USER MAPPING

创建外部表

postgres=# create foreign table ft_userinfo(id int, info text, crt_time timestamp) server pg154 options(schema_name ‘public’, table_name ‘userinfo’);
CREATE FOREIGN TABLE

修改外部表

postgres=# alter foreign table tab_area options(set null ‘^null*’);
ALTER FOREIGN TABLE

猜你喜欢

转载自blog.csdn.net/leiyuan112/article/details/89960159