- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我的想法是我有一个名为 northwind
的本地数据库,并且使用 postgres_fdw
我想连接本地主机上另一个名为 test
的数据库(远程连接模拟,比如当我的数据库中的表被更新时,在其他数据库中做一些事情,比如保存到历史等等。)。所以我打开 psql 控制台并输入:
CREATE SERVER app_db
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (dbname 'test', host 'localhost:5432');
正如我在 A Look at Foreign Data Wrappers 中发现的那样关联。接下来我也跟着教程:
CREATE USER MAPPING for postgres
SERVER app_db
OPTIONS (user 'postgres', password 'postgres');
(我假设用户和密码应该与我使用的相同,例如在 Hibernate 中访问数据库,并且在我的例子中,教程中的 current_user
是 postgres
因为这是我的 PgAdmin III 中唯一存在的角色)。然后我创建了外表:
CREATE FOREIGN TABLE groups
(
id serial NOT NULL,
name character varying(255) NOT NULL,
version integer DEFAULT 0
)
SERVER app_db OPTIONS (table_name 'groups')
没关系,我可以在 PgAdmin III 的 schema/foreign tables
中找到它。但是当我尝试 SELECT * FROM groups
时,我得到了:
********** ERROR**********
ERROR: could not connect to server "app_db"
SQL State: 08001
这可能是因为当我 CREATE SERVER app_db..
时我没有使用 localhost 服务器名称吗?我不能,因为它的名称带有空格(PostgreSQL 9.3)并且在创建时会导致一些奇怪的问题。先感谢您。更新:即使我在本地主机上创建另一个名为`app_db 的服务器,它也不起作用。
最佳答案
您可以使用 Unix Domain Socket 而不是 TCP 连接来连接以获得更简单的配置和更好的性能(仅限 Linux/Unix,Windows 不支持)。
CREATE SERVER app_db
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (dbname 'test');
此外,如果启用了peer
身份验证(默认),您可以省略密码。
CREATE USER MAPPING for postgres
SERVER app_db
OPTIONS (user 'postgres');
注意:peer
身份验证只能用于 postgres
用户,因为 FDW 连接是由作为系统用户 postgres
运行的服务器后端创建的。
此外,出于安全原因,postgresq_fdw 只允许对具有 SUPERUSER
权限的客户端进行 peer
身份验证。要允许受限用户使用 FDW,您必须使用 password
身份验证,如 this answer 中所述。
关于database - 如何使用 postgres_fdw 连接到本地主机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29900748/
我在使用 postgres_fdw 时遇到了一些问题。 CREATE SERVER foreign_server FOREIGN DATA WRAPPER postgres_fdw
使用 postgres_fdw,我需要在指定模式中创建外部表以防止名称冲突。为了隔离我一直遇到的问题,我在同一集群上设置了两个测试 postgres 数据库,import_test 和 export_
我写了这个 PostgreSQL 代码行,但是我有以下错误: ERROR: could not connect to server "server\sqlexpress" SQL state: 080
我有一个生产数据库“PRODdb1”,它有一个只读用户帐户。我需要查询(选择语句)这个数据库并将数据插入到名为“RPTdb1”的辅助数据库中。我最初计划从我的选择中在 PRODdb1 中创建一个临时表
我有两个数据库设置为同一个 Postgresql 9.4 数据库集群的一部分,我正在尝试使用 postgres_fdw 从另一个数据库访问其中一个中的表。我已将其全部设置好并以 super 用户身份工
我正在使用两个 PostgreSQL 9.6 数据库,并尝试使用 postgres_fdw 从另一个数据库查询一个数据库(一个是具有数据的生产备份数据库,另一个是用于进行各种分析的数据库)。 虽然查询
这是我要运行的查询 - 让我运行此查询的当前数据库是 db1,而我要插入记录的数据库是 db2。 insert into db2.employee(id, name, group) values(
如前所述here postgres_fdw 无法访问索引。 解决方法是在远程服务器上创建一个 View ,然后在本地服务器上为该 View 创建外部表包装器。 但是如果我想将参数传递给我的 View
我的想法是我有一个名为 northwind 的本地数据库,并且使用 postgres_fdw 我想连接本地主机上另一个名为 test 的数据库(远程连接模拟,比如当我的数据库中的表被更新时,在其他数据
我正在尝试使用 Azure DB for PostgreSQL 实例中的 PostgreSQL 外部数据包装器 (postgres_fdw) 扩展。应支持外部数据包装器,如 Azure DB for
我正在尝试使用 PostgreSQL Maestro 工具将来自“本地”数据库的外键引用到另一个数据库中的另一个主键(实际上,它们都在同一台远程机器上)。我听说过 postgres_fdw 模块可以创
(警告道歉和骇客入侵...) 背景: 我有一个遗留应用程序,我想避免重写它的大量 SQL 代码。我正在尝试加快它执行的特定类型的非常昂贵的查询(即:容易实现的成果)。 它有一个由 transactio
我有一个用例,将数据分布在许多服务器上的许多数据库中,所有这些都在 postgres 表中。从任何给定的服务器/数据库,我可能需要查询另一个服务器/数据库。查询非常基本,标准选择在标准字段上带有 wh
可以使用 postgres_fdw 通过 ssh 隧道连接吗? 数据库只能从数据库服务器访问,我需要从另一个远程服务器加入。数据库服务器使用 SSH key 登录。 如果可以,请问怎么做? 最佳答案
在 postgreSQL 9.5 中: 我有一个名为:sheetheight(由 file_fdw 创建)的外表和一个名为:dzlog(由 postgres_fdw 创建)的外表。 1- 为了连接外部
我在 RDS 中有两个 Postgres 9.3.5 实例,都在一个安全组中,允许来自安全组内的所有入站流量和所有出站流量。我正在尝试设置一个数据库,以便能够通过 postgres_fdw 从另一个表
我正在使用 postgres_fdw 连接到另一个 PostgreSQL 数据库。有时查询的性能很好,但有时查询可能会花费异常长的时间。我遇到了一个问题,如果我使用函数 CURRENT_DATE,查询
假设我有这样的查询 select * from remote_table join local_table using(common_key) 其中 remote_table 是一个带有 pos
从 PostgreSQL 10.x 开始,外部表支持聚合下推。 我注意到 sum 和 count 操作被推送到远程服务器,但 min 和 max 的推送方式不同。 select min(col) f
我是一名优秀的程序员,十分优秀!