pgsql_fdw
2014-06-06 16:26
197 查看
/article/1873813.html
是一个类似dblink的一个跨库操作的中间件。
ip:127.0.0.1
port:5432
dbname:postgres
外部库:
ip:127.0.0.1
port:5001
dbname:digoal
本地库postgres信息:
postgres=# select * from pg_stat_activity;
-[ RECORD 1 ]----+--------------------------------
datid | 12896
datname | postgres
pid | 39391
usesysid | 10
usename | postgres
application_name | psql
client_addr | ::1
client_hostname |
client_port | 57313
backend_start | 2014-06-09 10:11:39.697793+08
xact_start | 2014-06-09 10:55:19.629726+08
query_start | 2014-06-09 10:55:19.629726+08
state_change | 2014-06-09 10:55:19.629749+08
waiting | f
state | active
query | select * from pg_stat_activity;
外部库digoal信息:
digoal=# select * from pg_stat_activity;
-[ RECORD 1 ]----+--------------------------------
datid | 16384
datname | digoal
pid | 39570
usesysid | 10
usename | postgres
application_name | psql
client_addr | ::1
client_hostname |
client_port | 42339
backend_start | 2014-06-09 10:51:28.05419+08
xact_start | 2014-06-09 10:52:46.52235+08
query_start | 2014-06-09 10:52:46.52235+08
state_change | 2014-06-09 10:52:46.522354+08
waiting | f
state | active
query | select * from pg_stat_activity;
fdw_name:必须是creaete extension ...安装过的,比如“pgsql”,“file_fdw”,“plproxy”......
user_name:本地数据库用户名。
server_name:是在上一步通过create server创建的名字。
options:远程数据库端的信息。
如果去掉options的选项,则会自动在外部数据库中找到相应表。
是一个类似dblink的一个跨库操作的中间件。
1:环境:
本地库:ip:127.0.0.1
port:5432
dbname:postgres
外部库:
ip:127.0.0.1
port:5001
dbname:digoal
本地库postgres信息:
postgres=# select * from pg_stat_activity;
-[ RECORD 1 ]----+--------------------------------
datid | 12896
datname | postgres
pid | 39391
usesysid | 10
usename | postgres
application_name | psql
client_addr | ::1
client_hostname |
client_port | 57313
backend_start | 2014-06-09 10:11:39.697793+08
xact_start | 2014-06-09 10:55:19.629726+08
query_start | 2014-06-09 10:55:19.629726+08
state_change | 2014-06-09 10:55:19.629749+08
waiting | f
state | active
query | select * from pg_stat_activity;
外部库digoal信息:
digoal=# select * from pg_stat_activity;
-[ RECORD 1 ]----+--------------------------------
datid | 16384
datname | digoal
pid | 39570
usesysid | 10
usename | postgres
application_name | psql
client_addr | ::1
client_hostname |
client_port | 42339
backend_start | 2014-06-09 10:51:28.05419+08
xact_start | 2014-06-09 10:52:46.52235+08
query_start | 2014-06-09 10:52:46.52235+08
state_change | 2014-06-09 10:52:46.522354+08
waiting | f
state | active
query | select * from pg_stat_activity;
2:在外部数据库创建表
CREATE table test ( id int,info text);
digoal=# insert into test values(1,'xxxx'); INSERT 0 1
3:本地配置:
需先create extension postgres_fdw;创建此中间件。1:CREATE SERVER
define a new foreign serverCREATE SERVER server_name [ TYPE 'server_type' ] [ VERSION 'server_version' ] FOREIGN DATA WRAPPER fdw_name [ OPTIONS ( option 'value' [, ... ] ) ]
fdw_name:必须是creaete extension ...安装过的,比如“pgsql”,“file_fdw”,“plproxy”......
postgres=# create extension postgres_fdw ; CREATE EXTENSION postgres=# CREATE SERVER myserver FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'localhost', dbname 'digoal', port '5001'); CREATE SERVER
2:CREATE USER MAPPING
define a new mapping of a user to a foreign serverCREATE USER MAPPING FOR { user_name | USER | CURRENT_USER | PUBLIC } SERVER server_name [ OPTIONS ( option 'value' [ , ... ] ) ]
user_name:本地数据库用户名。
server_name:是在上一步通过create server创建的名字。
options:远程数据库端的信息。
postgres=# CREATE USER MAPPING FOR postgres SERVER myserver OPTIONS (user 'postgres', password '***'); CREATE USER MAPPING
postgres=# \deu+ List of user mappings -[ RECORD 1 ]------------------------------------ Server | myserver User name | postgres FDW Options | ("user" 'postgres', password '***')
3:CREATE FOREIGN TABLE
CREATE FOREIGN TABLE test ( id int,info text) server myserver options (schema_name 'public', table_name 'test');
如果去掉options的选项,则会自动在外部数据库中找到相应表。
4:在本地查看外部数据表
postgres=# select * from test; id | info ----+------ 1 | xxxx (1 row)
4:在本地库清理
1:删除foreign table:
postgres=# drop foreign table test; DROP FOREIGN TABLE
2:删除mapping:
postgres=# \deu+ List of user mappings Server | User name | FDW Options ----------+-----------+------------------------------------- myserver | postgres | ("user" 'postgres', password '***') (1 row) postgres=# DROP USER MAPPING IF EXISTS FOR postgres SERVER myserver; DROP USER MAPPING
3:删除server:
postgres=# drop server myserver ; DROP SERVER
相关文章推荐
- Pure-FTPd + LDAP + MySQL + PGSQL + Virtual-Users + Quota How To
- pgSQL 集群过程
- Example of PL/pgSQL: 在用户自定义函数中用 Return Query 返回一个表
- 从 Oracle 的 PL/SQL 向 PL/pgSQL移植
- PostgreSQL 昨天,今天和明天(即其简介)(转帖) 2006年04月1日 下午 2:12 | 作者:littlebat PostgreSQL 昨天,今天和明天(转自:http://www.pgsqldb.org/twiki/bin/view/PgSQL/PostgreSQL)
- PgSql Jdbc Copy Streams Example
- PL/pgSQL学习笔记之九
- pgsql 安装详解
- pgsql8.1中文文档截取
- pgsql查询--表表达式
- pgsql函数和操作符
- ruby on rails配置pgsql
- debian8下pgsql的主备同步热切手动脚本
- visual studio 2013 配置 ef+pgsql
- PgSQL · 特性分析 · full page write 机制
- pgsql 备份与恢复
- pgsql自动安装shell脚本整理
- greenplum + pgsql和Hadoop+hive+hbase
- pgsql安装
- PostgreSQL学习手册(PL/pgSQL过程语言)