create extension postgres_fdw;
create server vm05_tpsgdb foreign data wrapper postgres_fdw options (host '10.0.100.234',dbname 'tpsgdb',port '6840') ;
create user mapping FOR postgres server vm05_tpsgdb options (user 'sgisit',password 'sgi#sit') ;
postgres=# create extension postgres_fdw;
CREATE EXTENSION
postgres=#
postgres=#
postgres=#
postgres=# create server vm05_tpsgdb foreign data wrapper postgres_fdw options (host '10.0.100.234',dbname 'tpsgdb',port '6234') ;
CREATE SERVER
postgres=#
postgres=#
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-------------
app_admin | Superuser, Create role | {}
bob | No inheritance | {}
mayday | | {}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
sgidev | | {app_admin}
sgiecm | | {}
sgifs | | {}
sgijira | | {}
sgisit | | {}
sgiuat | | {app_admin}
sgiusm | | {}
temp1 | | {}
--for后面的postgres是本地登录执行的用户名,option里存储的是远程的用户密码
postgres=# create user mapping FOR postgres server vm05_tpsgdb1 options (user 'sgisit',password 'sgi#sit') ;
CREATE USER MAPPING
postgres=#
create user mapping命令语法:
CREATE USER MAPPING FOR { user_name | USER | CURRENT_USER | PUBLIC }
SERVER server_name
[ OPTIONS ( option 'value' [ , ... ] ) ]
例如:CREATE USER MAPPING FOR bob SERVER foo OPTIONS (user 'bob', password 'secret');
create foreign table vm05_caseidinfo ("id" int8 NOT NULL,"caseidprefix" varchar(255) COLLATE "default","currentvalue" int8) server vm05_tpsgdb options (table_name 'caseidinfo',schema_name 'sgisit') ;
select * from pg_foreign_server ;
select * from pg_user_mappings;
drop foreign table test.postgres_log
DROP FOREIGN DATA WRAPPER
DROP SERVER vm05_tpsgdb;
DROP USER MAPPING FOR sgisit SERVER vm05_tpsgdb;
select * from pg_extension;
select * from pg_foreign_data_wrapper;
select * from pg_foreign_server;
select * from pg_foreign_table;
清理:
postgres=# drop foreign table tbl_kenyon;
DROP FOREIGN TABLE
postgres=# drop user mapping for postgres server server_remote_71 ;
DROP USER MAPPING
postgres=# drop server server_remote_71 ;
DROP SERVER
postgres=# drop extension postgres_fdw ;
CREATE TYPE sgisit_f.inetrange AS RANGE (
subtype = inet
);
ALTER TYPE sgisit.inetrange OWNER TO postgres;
CREATE SCHEMA sgisit_foreign;
ALTER SCHEMA sgisit OWNER TO postgres;
IMPORT FOREIGN SCHEMA sgisit FROM SERVER vm05_tpsgdb INTO sgisit_foreign;
IMPORT FOREIGN SCHEMA sgisit FROM SERVER vm05_tpsgdb INTO public;
grant usage on foreign server TDS_ghanDB to postgres;
GRANT USAGE ON FOREIGN SERVER file_server TO file_fdw_user;