Postgresql 跨库操作

工作上遇到的一些自己不懂的技术,稍微记录下来,以备以后使用。

参考的跨库操作详细讲解:

https://my.oschina.net/Kenyon/blog/214953

https://yq.aliyun.com/articles/3074

https://wiki.postgresql.org/wiki/Foreign_data_wrappers

简单的解释一下跨库操作。跨库操作的关键字:fdw,即foreign data warppers,起源于2003年pg定义的一套名为SQL/MED的外部数据管理规范(根据wiki上的解释应该是接口),它定义了一套从sql数据库进行远程访问的标准方法。可以通过各种Foreign Data Wrappers来使用pg实现连接不同的远程数据存储介质。

此次使用的是postgresql_fdw,实现pg与pg之间的跨库访问以及数据的引用,主要步骤如下:

1.对需要的fdw进行安装:

create extension postgresql_fdw;

值得注意的是安装后的扩展方法及后面的远程连接可能涉及权限问题,所以这些操作尽量使用高权限账户执行,若其他账户使用可能会需要使用grant授权。

2.查询fdw是否安装成功

select * from pg_foreign_data_wrapper;

安装成功后fdwname中会有相应的fdw名。

3.创建远程连接

create server test_server foreign data wrapper postgres_fdw options(host 'testhost.com',port '5432',dbname 'postgres');

4.查看建立完成后的连接

select * from pg_foreign_server ;

5.配置连接用户匹配信息

create user mapping for test_user server test_server options(user 'target_user',password 'target_pass');

6.完成配置进行引用

导入目标schema:

import foreign schema test from server test_server into link_test;

(需要本地创建导入数据的schema)

导入目标schema下的某张表:

import foreign schema test limit to (test_table) from server test_server into link_test;

7.可以对server配置进行修改

alter server test_user options (set host 'newhost.com');

个人理解跨库操作对于经常需要对外部数据进行访问的场合比较适用,数据通过远程获取,减少本地存储占用,是一种比较强大的pg扩展方法。

你可能感兴趣的:(Postgresql 跨库操作)