我想要你位于其他数据库中的表。
我正在使用 dblink 。
程序:
第1步:创建扩展。
CREATE EXTENSION dblink;
步骤2:建立dblink连接字符串。
select dblink_connect('con','host=127.0.0.1 dbname=makdb user=postgres password=postgres');
第3步:
select * from dblink('con','select cola,colb from tbl_test') as tbl(cola int,colb varchar(10));
我的问题:如何在步骤2中隐藏密码?
通过搜索我知道我需要创建.pgpass
文件。但是陷入了如何创建以及在哪个步骤中我需要使用该文件名。
答案 0 :(得分:1)
安装dblink扩展名:
CREATE EXTENSION dblink;
安装postgres_fdw扩展名(可用于访问存储在外部PostgreSQL服务器中的数据):
CREATE EXTENSION postgres_fdw;
创建新的外部服务器连接:
CREATE server myserver foreign data wrapper postgres_fdw
OPTIONS (dbname 'foreign_dbname', host 'foreign_host');
为您最近创建的外部服务器连接和数据库创建用户映射。
CREATE USER MAPPING FOR "user_in_current_database"
SERVER myserver OPTIONS (user 'foreign_user', password 'foreign_password');
在创建了conexion的远程数据库中选择一些字段。请注意,您不再需要使用用户名和密码。
SELECT tmp_table.*
FROM dblink(
'myserver',
'
SELECT field1,
field2
FROM table
'
)
AS tmp_table(
field1 TEXT,
field2 BIGINT
);
更多信息:
https://www.postgresql.org/docs/9.5/postgres-fdw.html
https://www.postgresql.org/docs/current/sql-createserver.html
https://www.postgresql.org/docs/current/sql-createusermapping.html