日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

PG fdw 跨库建立外部表 (连接其它PG库或其它数据库 )

發(fā)布時(shí)間:2023/12/15 综合教程 35 生活家
生活随笔 收集整理的這篇文章主要介紹了 PG fdw 跨库建立外部表 (连接其它PG库或其它数据库 ) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

fdw是foreign-data wrapper的一個(gè)簡稱,可以叫外部封裝數(shù)據(jù)
PostgreSQL的數(shù)據(jù)庫邏輯上是相互獨(dú)立的,和Oracle類似,如果要訪問其他數(shù)據(jù)庫,需要做跨庫操作,Postgres本身提供了一些擴(kuò)展,比如dblink,pgsql_fdw等,高版本的建議使用postgres_fdw,也就是pgsql_fdw的升級(jí)版

1安裝fdw

fdw工具是pg自帶的擴(kuò)展工具,可以直接到postgres的解壓目錄安裝
路徑是postgresql-9.4.4/contrib/file_fdw 10版本之后不需要安裝

  make

  make install

安裝后進(jìn)入數(shù)據(jù)庫用select * from pg_available_extension 查看是否安裝完成postgres_fdw

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

create extension postgres_fdw; 建立fdw擴(kuò)展工具
創(chuàng)建遠(yuǎn)程服務(wù)器,這里需要定義主機(jī)地址,數(shù)據(jù)庫名和端口
create server fore_server foreign data wrapper postgres_fdw options(host '1.1.1.1',port '5432',dbname 'postgres');
指定連接遠(yuǎn)程數(shù)據(jù)庫的用戶,和創(chuàng)建的遠(yuǎn)程服務(wù)器一致
create user mapping for postgres server server_remote_farr options(user 'postgres',password 'postgres');

創(chuàng)建外部表
CREATE FOREIGN TABLE F_A
(id int)
server fore_server options (schema_name 'postgres',table_name 'A');

連接Mysql
CREATE SERVER mysql_svr  FOREIGN DATA WRAPPER mysql_fdw  OPTIONS (host '192.168.173.43', port '3306');
CREATE USER MAPPING FOR local SERVER mysql_svr  OPTIONS (username 'usr_fdw', password '123456');
CREATE FOREIGN TABLE pg_mysql_tbl_fdw (id integer,vname text)
SERVER mysql_svr OPTIONS (dbname 'mysql_fdw',table_name 'tbl_fdw');


連接Oracle:
CREATE SERVER oradb FOREIGN DATA WRAPPER oracle_fdw
          OPTIONS (dbserver '//dbserver.mydomain.com/ORADB');
          ////dbserver.mydomain.com/ORADB指的是tns的名稱
GRANT USAGE ON FOREIGN SERVER oradb TO pguser;
CREATE USER MAPPING FOR pguser SERVER oradb  OPTIONS (user 'orauser', password 'orapwd');
CREATE FOREIGN TABLE oratab (
          id        integer           OPTIONS (key 'true')  NOT NULL,
          text      character varying(30),
          floating  double precision  NOT NULL
       ) SERVER oradb OPTIONS (schema 'ORAUSER', table 'ORATAB');
連接Sqlserver:
CREATE SERVER mssql_svr
    FOREIGN DATA WRAPPER tds_fdw
    OPTIONS (servername '127.0.0.1', port '1433', database 'tds_fdw_test');

CREATE USER MAPPING FOR postgres
    SERVER mssql_svr 
    OPTIONS (username 'sa', password 'xxxx');

    
CREATE FOREIGN TABLE mssql_table (
    id integer,
    data varchar)
    SERVER mssql_svr
    OPTIONS (table_name 'dbo.mytable');


更改 server:
ALTER SERVER foo  OPTIONS (SET host 'baz');
更改 user mapping:
ALTER USER MAPPING FOR bob SERVER foo OPTIONS (SET password 'public');
更改 foreign table:
ALTER FOREIGN TABLE myschema.distributors OPTIONS (ADD opt1 'value', SET opt2 'value2', DROP opt3 'value3');

3.使用外部表(連接文件)

需要先安裝file_fdw,一般是進(jìn)到PostgreSQL的源碼包中的contrib/file_fdw目錄下,執(zhí)行:

make
make install

然后進(jìn)入數(shù)據(jù)庫中,執(zhí)行以下SQL把file_fdw安裝上:

CREATE EXTENSION file_fdw;
CREATE SERVER file_fdw_server FOREIGN DATA WRAPPER file_fdw;

Pg連接外部文件

1. 安裝file_fdw

需要先安裝file_fdw,一般是進(jìn)到PostgreSQL的源碼包中的contrib/file_fdw目錄下,執(zhí)行:

make
make install

然后進(jìn)入數(shù)據(jù)庫中,執(zhí)行以下SQL把file_fdw安裝上:

CREATE EXTENSION file_fdw;
CREATE SERVER file_fdw_server FOREIGN DATA WRAPPER file_fdw;

2. 建立外部表


就以常見emp表為例;

createforeigntableEMP
(
empnointegernotnull,
enameVARCHAR(10),
jobVARCHAR(9),
mgrinteger,
hiredateDATE,
salNUMERIC(6,2),
commNUMERIC(6,2),
deptnointeger
)SERVERfile_fdw_server
OPTIONS(format'csv',header'true',filename'/home/postgres/emp.log',delimiter',',null'');

--后面options里面參數(shù)的說明
--filename后面是文件名和絕對(duì)路徑
--format是格式,csv是逗號(hào)分隔,text表示是tab分隔的方式
--delimiter是分隔符--header表示第一行數(shù)據(jù)是否需要;為true表示不需要;默認(rèn)為false;為需要
--null表示空數(shù)據(jù)的轉(zhuǎn)化處理,例子中字段''將轉(zhuǎn)化為null











總結(jié)

以上是生活随笔為你收集整理的PG fdw 跨库建立外部表 (连接其它PG库或其它数据库 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。