婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PostgreSQL的外部數據封裝器fdw用法

PostgreSQL的外部數據封裝器fdw用法

熱門標簽:廣州電銷機器人公司招聘 天津開發區地圖標注app 電話機器人怎么換人工座席 江蘇400電話辦理官方 地圖標注要花多少錢 400電話申請客服 濟南外呼網絡電話線路 移動外呼系統模擬題 電銷機器人能補救房產中介嗎

數據封裝器fdw(Foreign Data Wrappers)在PostgreSQL中相當于oracle中的dblink,可以很方便的操作其他數據庫中的數據。

場景,在本地的test庫中通過外部數據封裝器fdw訪問本地的testdb中的t2表

本地庫test用戶u1,遠程庫test用戶dbuser

版本:

postgres=# select version();
             version
------------------------------------------------------------
 PostgreSQL 11.1, compiled by Visual C++ build 1914, 64-bit
(1 行記錄)

1,安裝postgres_fdw擴展與授權

CREATE EXTENSION postgres_fdw;

如果需要授權

grant usage on foreign data wrapper postgres_fdw to u1;

2,然后使用CREATE SERVER創建一個外部服務器。

CREATE SERVER foreign_server
    FOREIGN DATA WRAPPER postgres_fdw
    OPTIONS (host '127.0.0.1', port '5432', dbname 'testdb');

3,用CREATE USER MAPPING 定義的用戶映射來標識將在遠程服務器上使用的角色:

CREATE USER MAPPING FOR public
    SERVER foreign_server
    OPTIONS (user 'dbuser', password '123456');

4,用CREATE FOREIGN TABLE創建外部表了。

在這個例子中我們希望訪問遠程服務器上名為 some_schema.some_table的表。它的本地名稱是 foreign_table,注意結構要對應

CREATE FOREIGN TABLE foreign_table_t2(id int,name varchar(10))
SERVER foreign_server options(schema_name 'public',table_name 't2');

這樣就可以通過foreign_table_t2來操作遠程的表t2了

當然可以使用oracle_fdw,mysql_fdw,tds_fdw,redis_fdw等來操作別的數據庫

補充:PostgreSQL數據庫插件fdw使用心得—mysql_fdw、oracle_fdw、postgresql_fdw

fdw是foreign data wrapper的一個簡稱,叫做外部封裝數據。

用命令行登陸postgresql:

plsql -h ip地址 -p 端口號 -U 用戶名 -d 庫名

1、安裝fdw

fdw工具是pg自帶擴展工具,pg10版本之后不需要再單獨安裝,一般分為postgresql_fdw、mysql_fdw、file_fdw、oracle_fdw等。可以將不同的異構數據源當成pg的外表。

2、創建庫連接

postgresql_fdw

一. 創建postgres_fdw擴展(僅需第一次執行):

-- 創建postgresql_fdw擴展
-- Foreign Data Wrapper: postgres_fdw
CREATE FOREIGN DATA WRAPPER postgres_fdw
  
-- 刪除該擴展
-- DROP FOREIGN DATA WRAPPER postgres_fdw

二. 創建遠程服務器,這里需要定義遠程主機ip、數據庫庫名、端口號(同一個遠程數據庫只需執行一次):

-- 創建ods_server服務對接遠程數據庫的ods_db庫
-- Foreign Server: ods_server
CREATE SERVER ods_server
  FOREIGN DATA WRAPPER postgres_fdw
  OPTIONS (host '68.26.1.1', dbname 'ods_db', port '5432');
  
-- 刪除該服務  
-- DROP SERVER ods_server;

三. 指定連接遠程數據庫的用戶, 和創建的遠程服務器一致(同一個遠程數據庫只需執行一次):

-- 指定連接遠程
-- User Mapping : xdh
CREATE USER MAPPING FOR ods_db SERVER ods_server
  OPTIONS ("user" 'xha', password '123456');
  
-- 刪除該指定用戶
-- DROP USER MAPPING FOR creditrisk SERVER cscs

四. 在接受數據的pg數據庫創建外部表:

CREATE FOREIGN TABLE zha.student(
  id integer,
  name varchar(50),
  age integer,
  sex varchar(20)
)
SERVER ods_server 
OPTIONS(schema_name'ods',table_name 'student_ods');
-- 將該外表的權限按需要賦權給其它用戶
GRANT ALL ON TABLE zha.student TO zha;
GRANT SELECT ON TABLE zha.student TO zhb;

Materialized View 物化視圖

五. 可將外部表映射成pg的物化視圖,以便進行數據查詢等(同一張表只需執行一次):

-- Materialized View: gzk.student
-- DROP MATERIALIZED VIEW gzk.student;
CREATE MATERIALIZED VIEW gzk.student
AS
  SELECT
    id,
    name,
    age,
    sex
  from zha.student;

六. 刷新物化視圖的數據:

普通視圖的數據只是一個select,可以隨原表數據的變化而變化,但物化視圖類似于一個真正的表,可以創建索引,數據不會隨著原表的變化而變化,需要手動刷新數據。

-- 全量刷新(先清空表再重新映射數據,刷新時阻塞select! 較快!)
refresh materialized view gzk.student;
-- 增量刷新(全表數據對比更新,刷新時不會阻塞select! 較慢!)
-- 只有當物化視圖中存在unique index(唯一索引)的時候,
-- refresh物化視圖才能使用增量更新,加入concurrently參數。否則報錯。
refresh materiallized view concurrently gzk.student;
-- 報錯
-- ERROR: cannot refresh materialized view "gzk.student" concurrently
-- HINT: Create a unique index with no WHERE clause on one 
-- or more columns of the materialized view.
-- 在物化視圖上創建unique index(唯一索引,可以以自增主鍵id為唯一索引)
create unique index uidx_mv_id on gzk.student(id);
refresh materiallized view concurrently gzk.student;
-- 執行成功
-- 實際業務中可選增量刷新,定時執行refresh的方式

七. 可以把物化視圖刷新sql放到pgAgent job里, 定時刷新數據.

八. mysql_fdw、oracle_fdw、file_fdw用法類似,不做贅述。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • PostgreSQL 中的postgres_fdw擴展詳解
  • PostgreSQL的B-tree索引用法詳解
  • Postgresql 如何選擇正確的關閉模式
  • PostgreSQL查看正在執行的任務并強制結束的操作方法
  • PostgreSQL copy 命令教程詳解
  • Postgresql在mybatis中報錯:操作符不存在:character varying == unknown的問題
  • postgresql 如何關閉自動提交

標簽:溫州 濮陽 寶雞 辛集 昭通 杭州 海西 榆林

巨人網絡通訊聲明:本文標題《PostgreSQL的外部數據封裝器fdw用法》,本文關鍵詞  PostgreSQL,的,外部,數據,封裝,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PostgreSQL的外部數據封裝器fdw用法》相關的同類信息!
  • 本頁收集關于PostgreSQL的外部數據封裝器fdw用法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 尉犁县| 平武县| 鸡西市| 青川县| 年辖:市辖区| 岐山县| 玉屏| 茌平县| 英吉沙县| 海兴县| 沅江市| 泽州县| 来安县| 宜城市| 上栗县| 高台县| 凌海市| 蕲春县| 资中县| 诸城市| 天峻县| 汽车| 仲巴县| 青海省| 双牌县| 满洲里市| 昌乐县| 孝感市| 江华| 拜城县| 巴青县| 清镇市| 衡南县| 大田县| 洞口县| 体育| 宝山区| 西丰县| 乐东| 扶余县| 长乐市|