postgresql 跨庫查詢

2021-10-03 07:19:11 字數 1707 閱讀 4141

跨庫訪問常用的三種方式:schema,dblink,postgres_fdw

第一種:schema(架構方式)

其實還是在乙個資料庫中,只不過把不同資料儲存在不同的架構中,建立與public並行的架構

訪問其他架構下面的需要帶上架構名稱.表名,如下格式

select * from public.test;

select * from test.test1;

如果認為輸入框架名稱太麻煩,可以設定

set search_path to "$user",

public,test;    前面是固定格式,後面是對應要訪問的兩個框架,第乙個引數為本框架,另乙個為要訪問的框架,設定完成後訪問直接可以訪問表名,不需要加架構名稱

在public訪問test框架中的test1表:select * from test1;

第二種,dblink

跨庫查詢必須使用dblink,無法像oracle那樣,授權然後直接訪問

首先建立擴充套件

create extension

dblink;

再去查詢

select * from dblink('host=127.0.0.1 dbname=postgres user=postgres password=123456','select * from account') as t(id int,name varchar(10));

如果要查詢別的資料庫的東西,可以建立檢視,然後從檢視中查詢

第三種 postgres_fdw

首先安裝該擴充套件

create extension postgres_fdw;

然後使用

create server建立乙個外部伺服器。在這個示例中,我們希望連線到主機為192.83.123.89 的postgresql伺服器,監聽埠為5432。遠端伺服器上做連線的資料庫名為situation

create server foreign_server

options (host '192.168.6.168', port '5432', dbname 'situation');

也需要乙個使用

server foreign_server

options (user 'postgres', password 'admin@110');

現在可以用

create foreign table建立乙個外部表了。在這個示例中,我們希望訪問遠端伺服器上名為some_schema.some_table 的表。它的本地名為foreign_table:chatgroup為遠端表名

create foreign table foreign_table (

id text not null,

groupid text,

userid text,

createuserid text,

createtime timestamp )

server foreign_server

options (schema_name 'public', table_name 'chatgroup');

查詢資料

select * from foreign_table;

PostgreSQL跨庫查詢

首先宣告,我是從mssql陣營剛入postgresql陣營的。轉營這幾天來,深感這些年來被mssql坑害不淺!進入正題,在mssql中,跨資料庫 相同伺服器或不同伺服器的都算 查詢可以輕鬆使用select from otherdb.dbo.mytable 相同伺服器中的不同資料庫 或select f...

mysql跨庫跨表查詢

簡單記錄 select from dysns.uchome pay record,91feile.phpcms game where uchome pay record.uid phpcms game.touserid select from dysns.uchome pay record,91fe...

mysql跨服務跨庫查詢

若是不同服務不同庫需要 檢視federated引擎是否開啟 mysql查詢視窗輸入指令 show engines 如果有federated引擎,但support是no,說明你的mysql安裝了這個引擎,但沒啟用,去mysql安裝錄下找到配置檔案my.ini,在 mysqld 字段 檔案末 新增一行f...