PostgreSQL外部表postgres

编程入门 行业动态 更新时间:2024-10-11 11:17:13

<a href=https://www.elefans.com/category/jswz/34/1770967.html style=PostgreSQL外部表postgres"/>

PostgreSQL外部表postgres

作者:瀚高PG实验室 (Highgo PG Lab)- 徐云鹤
本文简单探讨下PostgreSQL外部表postgres_fdw。
添加extension。

highgo=# create extension postgres_fdw ;           
CREATE EXTENSION
highgo=# \dxList of installed extensionsName     | Version |   Schema   |                    Description                     
--------------+---------+------------+----------------------------------------------------plpgsql      | 1.0     | pg_catalog | PL/pgSQL procedural languagepostgres_fdw | 1.0     | public     | foreign-data wrapper for remote PostgreSQL servers
(2 rows)

创建远端数据库。

highgo=# create database dblink TEMPLATE template0;
CREATE DATABASE

本地创建server。

highgo=# select * from pg_foreign_data_wrapper;fdwname    | fdwowner | fdwhandler | fdwvalidator | fdwacl | fdwoptions
--------------+----------+------------+--------------+--------+------------postgres_fdw |       10 |      24582 |        24583 |        |
(1 row)
highgo=# create server server_remote_dblink foreign data wrapper postgres_fdw options(host '127.0.0.1',port '5866',dbname 'highgo');
CREATE SERVER
highgo=#  select * from pg_foreign_server ;srvname        | srvowner | srvfdw | srvtype | srvversion | srvacl |                srvoptions               
----------------------+----------+--------+---------+------------+--------+------------------------------------------server_remote_dblink |       10 |  24584 |         |            |        | {host=127.0.0.1,port=5866,dbname=highgo}
(1 row)highgo=# \desList of foreign serversName         | Owner  | Foreign-data wrapper
----------------------+--------+----------------------server_remote_dblink | highgo | postgres_fdw
(1 row)

创建用户匹配信息

highgo=# create user mapping for highgo server server_remote_dblink options(user 'highgo',password 'highgo');
CREATE USER MAPPING
highgo=#  select * from pg_user_mappings;umid  | srvid |       srvname        | umuser | usename |            umoptions             
-------+-------+----------------------+--------+---------+----------------------------------24592 | 24591 | server_remote_dblink |     10 | highgo  | {user=highgo,password=highgo123}
(1 row)

创建外部表。

highgo=# CREATE FOREIGN TABLE bb(name char(2)) server server_remote_dblink options (schema_name 'public',table_name 'aa');
CREATE FOREIGN TABLE
highgo=# select * from bb;name
------
(0 rows)

在dblink库里插一条数据后再次查询。

highgo=# select * from bb;name 
--------信息
(1 row)

查看类型。

highgo=# \dList of relationsSchema     | Name |     Type      | Owner 
----------------+------+---------------+--------oracle_catalog | dual | view          | highgopublic         | a    | table         | highgopublic         | bb   | foreign table | highgo
(3 rows)

删除外部表。

highgo=# DROP FOREIGN TABLE bb;
DROP FOREIGN TABLE

导入整个schema下的所有表。

highgo=# grant all on foreign server server_remote_dblink to highgo;
GRANThighgo=# IMPORT FOREIGN SCHEMA public FROM SERVER server_remote_dblink into public;
IMPORT FOREIGN SCHEMA
highgo=# \dList of relationsSchema     | Name |     Type      | Owner 
----------------+------+---------------+--------oracle_catalog | dual | view          | highgopublic         | a    | table         | highgopublic         | aa   | foreign table | highgo
(3 rows)

如果远端的表有drop或者create,在本地不会同步更新。
所以如果远端删除了表,再通过外部表查询,会提示不存在。









更多推荐

PostgreSQL外部表postgres

本文发布于:2024-02-06 15:33:07,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1750080.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:PostgreSQL   postgres

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!