fdw postgres_fdw

news/2024/7/5 5:59:51

os:centos 6.8
db:postgresql 9.6

fdw:foreign data wrapper,postgresql的外部数据包装器。
postgres_fdw 是用于postgresql的数据库之间连接,原因是postgresql不能直接跨库访问,被设计用来替代dblink。
这么口语化的描述,大家应该一下子就清楚了。

还有个问题,使用dblink时必须把用户密码写进去,导致几乎没有安全性。postgres_fdw 对使用者而言,是看不到密码的。只有superuser才能看到密码。安全性大大提高。

postgres=# select * from pg_available_extensions p where 1=1 and p.name = 'postgres_fdw';

     name     | default_version | installed_version |                      comment                       
--------------+-----------------+-------------------+----------------------------------------------------
 postgres_fdw | 1.0             |                   | foreign-data wrapper for remote PostgreSQL servers
(1 row)

postgres=> select * from pg_foreign_data_wrapper;

 fdwname | fdwowner | fdwhandler | fdwvalidator | fdwacl | fdwoptions 
---------+----------+------------+--------------+--------+------------
(0 rows)

create extension

创建扩展

postgres=# create extension postgres_fdw;
CREATE EXTENSION

postgres=# select * from pg_extension p where 1=1;

   extname    | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition 
--------------+----------+--------------+----------------+------------+-----------+--------------
 plpgsql      |       10 |           11 | f              | 1.0        |           | 
 postgres_fdw |       10 |         2200 | t              | 1.0        |           | 
(2 rows)

postgres=> select * from pg_foreign_data_wrapper;

   fdwname    | fdwowner | fdwhandler | fdwvalidator | fdwacl | fdwoptions 
--------------+----------+------------+--------------+--------+------------
 postgres_fdw |       10 |    2284382 |      2284383 |        | 
(1 row)

create server

创建外部服务器

postgres=# \h create server
Command:     CREATE SERVER
Description: define a new foreign server
Syntax:
CREATE SERVER [IF NOT EXISTS] server_name [ TYPE 'server_type' ] [ VERSION 'server_version' ]
    FOREIGN DATA WRAPPER fdw_name
    [ OPTIONS ( option 'value' [, ... ] ) ]
    
postgres=# create server abc_postgresql_fdw_server foreign data wrapper postgres_fdw options (host '127.0.0.1', port '5432', dbname 'abc');
CREATE SERVER

create user mapping

创建用户映射

postgres=# \h create user mapping
Command:     CREATE USER MAPPING
Description: define a new mapping of a user to a foreign server
Syntax:
CREATE USER MAPPING [IF NOT EXISTS] FOR { user_name | USER | CURRENT_USER | PUBLIC }
    SERVER server_name
    [ OPTIONS ( option 'value' [ , ... ] ) ]

postgres=# create user mapping for peiyb server abc_postgresql_fdw_server options (user 'peiyb', password 'peiybpeiyb');

create user mapping for 后面那个用户名是本地的用户名.

superuser 可以灵活使用 fdw,但是对于普通账号的用户,需要授权

postgres=# grant usage on foreign data wrapper postgres_fdw to peiyb;

postgres=# grant usage on foreign server abc_postgresql_fdw_server to peiyb;

create foreign table

创建外部表

postgres=# create foreign table tmp_peiyb_20180509 (
        userid int8
        )
        server abc_postgresql_fdw_server
        options (schema_name 'public', table_name 'tmp_t0');
        
postgres=# select * from tmp_peiyb_20180509 limit 10;

可以查询下列的表:

select * from pg_foreign_table;
select * from pg_user_mapping;
select * from pg_foreign_server;
select * from pg_foreign_data_wrapper;
select * from pg_extension;

删除

drop foreign table tmp_peiyb_20180509;
drop user mapping for peiyb server abc_postgresql_fdw_server;
drop server abc_postgresql_fdw_server;
drop extension postgres_fdw;


http://www.niftyadmin.cn/n/2124326.html

相关文章

elasticsearch启动常见问题

elasticsearch启动常见问题 原文:https://blog.csdn.net/qq_22211217/article/details/80740873 一、Exception in thread "main" SettingsException[Failed to load settings from [elasticsearch.yml]]; nested: ElasticsearchParseException[malform…

mac 更改默认php

1.新建一个.bash_profile文件并编辑 vim ~/.bash_profile 2.然后在里面输入自己想要的php版本 export PATH/Applications/MAMP/bin/php/php7.2.7/bin:$PATH #/Applications/MAMP/bin/php/php7.2.7/bin是我的php版本路径 3.保存重载环境变量 source ~/.bash_profile 如果你…

postgresql 函数的三个状态

postgresql 的函数有三个状态:IMMUTABLE、STABLE、VOLATILE。这个是与其他数据库有明显概念差别的。 简单描述如下: IMMUTABLE(非常稳定) 表示该函数不能修改数据库并且对于给定的参数值总是会返回相同的值。也就是说,它不会做数据库查找或…

(MAC)Docker容器Removal In Progress删除方案

一 :进入Docker桌面 screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty 二 :找文件(根据自己找文件) cd /var/lib/docker/overlay2/e000b8a86824f48cb824ab643ce7d035e7ec4f3114bad897a2235cf922bba972/diff# 三:安装chatt…

pgpool 之一 1 pgpool + 2 postgresql stream replication 模式

os: centos7.4 db: postgresql 9.6.8 pgpool: pgpool-II-3.7.3 pgpool 简介 准确的名字是Pgpool-II,这里简称为pgpool。pgpool 是介于postgresql 服务和 postgresql 客户端的中间件。它提供如下功能: 1、连接池 2、复制 3、负载均衡 4、限制超过限度的…

centos7 实现elasticsearch-head 开机自启

一 在/etc/init.d 目录下,创建脚本文件 eshead # cd /etc/init.d/ # vim eshead 二 将以下内容写入文件中(其中nodejs安装路径、elasticsearch-head安装路径根据实际情况进行修改) #!/bin/sh #chkconfig: 2345 80 05 #description el…

Unix实用和常用的命令集合

bash: 是GNU Bourne-Again的外壳,是一个增强的和sh兼容的外壳,bash的提示符是$ cat: 显示文本的内容 cc:用于许多系统的C的编译器 cd:进入某个目录 chgrp:改变文件的组所有权 chmod&#x…

pgpool 之二 stream replication 模式 + slave down up

os: centos7.4 postgresql:9.6.8 pgpool:3.7.3 采用 streaming replication mode 模式,这是比较通用的方案。 The streaming replication mode can be used with PostgreSQL servers operating streaming replication. In this mode, PostgreSQL is responsible fo…