最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PostgreSQL的外部數(shù)據(jù)封裝器fdw用法

 更新時間:2021年01月19日 09:02:42   作者:朝聞道-夕死可矣  
這篇文章主要介紹了PostgreSQL的外部數(shù)據(jù)封裝器fdw用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

場景,在本地的test庫中通過外部數(shù)據(jù)封裝器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創(chuàng)建一個外部服務器。

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創(chuàng)建外部表了。

在這個例子中我們希望訪問遠程服務器上名為 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等來操作別的數(shù)據(jù)庫

補充:PostgreSQL數(shù)據(jù)庫插件fdw使用心得—mysql_fdw、oracle_fdw、postgresql_fdw

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

用命令行登陸postgresql:

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

1、安裝fdw

fdw工具是pg自帶擴展工具,pg10版本之后不需要再單獨安裝,一般分為postgresql_fdw、mysql_fdw、file_fdw、oracle_fdw等??梢詫⒉煌漠悩嫈?shù)據(jù)源當成pg的外表。

2、創(chuàng)建庫連接

postgresql_fdw

一. 創(chuàng)建postgres_fdw擴展(僅需第一次執(zhí)行):

-- 創(chuàng)建postgresql_fdw擴展
-- Foreign Data Wrapper: postgres_fdw
CREATE FOREIGN DATA WRAPPER postgres_fdw
  
-- 刪除該擴展
-- DROP FOREIGN DATA WRAPPER postgres_fdw

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

-- 創(chuàng)建ods_server服務對接遠程數(shù)據(jù)庫的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;

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

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

四. 在接受數(shù)據(jù)的pg數(shù)據(jù)庫創(chuàng)建外部表:

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的物化視圖,以便進行數(shù)據(jù)查詢等(同一張表只需執(zhí)行一次):

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

六. 刷新物化視圖的數(shù)據(jù):

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

-- 全量刷新(先清空表再重新映射數(shù)據(jù),刷新時阻塞select! 較快!)
refresh materialized view gzk.student;
-- 增量刷新(全表數(shù)據(jù)對比更新,刷新時不會阻塞select! 較慢!)
-- 只有當物化視圖中存在unique index(唯一索引)的時候,
-- refresh物化視圖才能使用增量更新,加入concurrently參數(shù)。否則報錯。
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.
-- 在物化視圖上創(chuàng)建unique index(唯一索引,可以以自增主鍵id為唯一索引)
create unique index uidx_mv_id on gzk.student(id);
refresh materiallized view concurrently gzk.student;
-- 執(zhí)行成功
-- 實際業(yè)務中可選增量刷新,定時執(zhí)行refresh的方式

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

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

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

相關文章

  • PostgreSQL?數(shù)組類型操作使用及特點詳解

    PostgreSQL?數(shù)組類型操作使用及特點詳解

    這篇文章主要為大家介紹了PostgreSQL?數(shù)組類型操作使用及特點詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • PostgreSQL數(shù)據(jù)庫如何定期清理歸檔(pg_wal)日志

    PostgreSQL數(shù)據(jù)庫如何定期清理歸檔(pg_wal)日志

    在?般的?產(chǎn)環(huán)境中,數(shù)據(jù)庫都需要開啟歸檔模式,下面這篇文章主要給大家介紹了關于PostgreSQL數(shù)據(jù)庫如何定期清理歸檔(pg_wal)日志的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-05-05
  • PostgreSQL數(shù)據(jù)庫的基本查詢操作

    PostgreSQL數(shù)據(jù)庫的基本查詢操作

    這篇文章采用詳細的代碼示例為大家介紹了PostgreSQL數(shù)據(jù)庫的基本查詢操作使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-04-04
  • 淺談PostgreSQL 11 新特性之默認分區(qū)

    淺談PostgreSQL 11 新特性之默認分區(qū)

    這篇文章主要介紹了淺談PostgreSQL 11 新特性之默認分區(qū),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • PostgreSQL并行計算算法及參數(shù)強制并行度設置方法

    PostgreSQL并行計算算法及參數(shù)強制并行度設置方法

    這篇文章主要介紹了PostgreSQL 并行計算算法,參數(shù),強制并行度設置,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • 淺談PostgreSQL的客戶端認證pg_hba.conf

    淺談PostgreSQL的客戶端認證pg_hba.conf

    這篇文章主要介紹了淺談PostgreSQL的客戶端認證pg_hba.conf,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • PostgreSQL數(shù)據(jù)庫遷移部署實戰(zhàn)教程

    PostgreSQL數(shù)據(jù)庫遷移部署實戰(zhàn)教程

    這篇文章主要介紹了PostgreSQL數(shù)據(jù)庫遷移部署實戰(zhàn)教程,由于項目本身就是基于PostgreSQL數(shù)據(jù)庫構建的,因此數(shù)據(jù)庫遷移將變得十分便捷,接下來,我將簡要介紹我們的遷移步驟,需要的朋友可以參考下
    2023-07-07
  • PostgreSQL數(shù)據(jù)庫中窗口函數(shù)的語法與使用

    PostgreSQL數(shù)據(jù)庫中窗口函數(shù)的語法與使用

    這PostgreSQL中提供了窗口函數(shù),一個窗口函數(shù)在一系列與當前行有某種關聯(lián)的表行上進行一種計算。下面這篇文章主要給大家介紹了關于PostgreSQL數(shù)據(jù)庫中窗口函數(shù)的語法與使用的相關資料,需要的朋友可以參考下
    2019-03-03
  • postgresql 計算兩點距離的2種方法小結

    postgresql 計算兩點距離的2種方法小結

    這篇文章主要介紹了postgresql 計算兩點距離的2種方法小結,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • postgres主備切換之文件觸發(fā)方式詳解

    postgres主備切換之文件觸發(fā)方式詳解

    這篇文章主要介紹了postgres主備切換之文件觸發(fā)方式詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12

最新評論

讷河市| 五大连池市| 沧源| 东台市| 沁阳市| 乐业县| 乐山市| 水城县| 兴仁县| 德令哈市| 乌鲁木齐县| 邵阳市| 南城县| 恩平市| 莲花县| 通城县| 涡阳县| 阿鲁科尔沁旗| 崇仁县| 榆树市| 福海县| 神木县| 柘城县| 西丰县| 阿克陶县| 富源县| 武冈市| 彩票| 贵德县| 陆良县| 临城县| 安乡县| 棋牌| 个旧市| 鄂托克旗| 南溪县| 富锦市| 潍坊市| 盐池县| 隆化县| 凤阳县|