问题标签 [postgres-fdw]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1042 浏览

postgresql - Postgresql 和 dblink:我如何进行 UPDATE FROM?

这是已经有效的方法,但它使用的是循环:

(我正在nickname, slug为本地表中的每一行更新远程表上的字段)

现在,我想做的是做大量UPDATE (remote) FROM (local)

通过查看各种解决方案( postgresql: INSERT INTO ... (SELECT * ...) ),我已经走到了这一步SELECTDELETE并且我知道如何在INSERT/SELECT. 我也可以使用绑定变量进行直接更新。但是怎么样UPDATE FROM

如果不可能,我应该查看 PostgresFOREIGN TABLE或类似的东西吗?

本地和远程数据库都在同一个 Postgres 服务器上。如果重要的话,还有一点信息是,任何一个数据库都可以单独删除和恢复,我更喜欢一个轻量级的解决方案,每次都不需要大量配置来重新建立通信。

0 投票
0 回答
503 浏览

postgresql - Postgres 外部数据包装器 (FDW) 的最大表/查询大小限制?

PostgreSQL 外部数据包装器扩展是否有限制?即是否可以通过 FDW 将源表(或模式/数据库)设置为外部表的最大大小?我们正在使用 Postgres 10.6

我们偶尔会遇到这样的情况:表超过某个大小阈值(~8GB)时它似乎失败了,但我不确定这是否是我们可以调整的,或者可能是对源数据库端的限制。(在此示例中,源表位于 Redshift 中。)

返回的错误消息是: ERROR: exceeded the maximum size allowed for the total set of cursor data: 8000MB.

编辑:发现问题的根源 - 这个特定 Redshift 实例的大小有这个光标大小限制。它们在此处列出:https ://docs.aws.amazon.com/redshift/latest/dg/declare.html#declare-constraints

我们最终过滤了结果以使 FDW 更可行。

0 投票
1 回答
857 浏览

postgresql - PostgreSQL 外表错误关系不存在

我创建了一个外部表urltrackerft

在我的外国服务器util中,它有表urltracker

在此处输入图像描述

在此处输入图像描述

我已按照此处创建外部服务器和表的步骤: https ://www.postgresql.org/docs/current/postgres-fdw.html

我的创建脚本如下所示:

但是当我尝试阅读urltrackerft表格时,我收到以下错误消息: 在此处输入图像描述

对我来说,看起来可能外国服务器没有完全同步。

检查用户映射,信息看起来正确,可能是主机不是 IP 而是 DNS? 在此处输入图像描述

对于其中一台服务器,可能firewallhba_conf不正确。但我util在主服务器中看到了外国服务器。我对这个有点迷茫。任何帮助表示赞赏,谢谢!

主服务器在 PostgreSQL v10 上,外部服务器在 PostgreSQL v11 上。

0 投票
1 回答
404 浏览

sql - 在两个 Postgres 服务器之间复制大量数据集

我想在两个 postgres 服务器之间复制大量数据集。具体来说,我想:

  1. 将源数据库服务器中的两个表中的一些列(不是全部)复制到目标数据库服务器中的单个表中。
  2. 重命名目标表中的这些列(因为数据集是副本),因为目标列名与原始列名不同(也许我应该说在目标表中的 some_column_name 中插入值)。

我知道postgres_fdw不能用于完成此任务,因为它将整个表复制到新表(不合并选定字段以形成新表)并且源表和目标表都必须具有匹配的列号。

我的源数据库服务器是一个远程 I ssh,要复制的数据集约为 5GB。

有什么建议可以完成我的任务吗?

0 投票
0 回答
1853 浏览

postgresql - postgres_fdw 和 uuid-ossp 缺少二进制文件

我正在将我的数据库从 10.4 升级到 11.3,但是在使用 pg_upgrade 执行检查时,我收到以下错误:

我正在使用 CentOS 7 并查看是否需要先创建扩展,我尝试了以下操作并收到以下错误:

因此,当我执行 postgres 页面上记录的 yum install 时,似乎没有加载 FDW 二进制文件。有没有办法单独安装这些文件,或者有另一种方法可以让它工作,以便我可以完成升级?

0 投票
0 回答
2297 浏览

postgresql - Postgres:在 FOREIGN TABLE 上触发

我想在我的数据库中使用postgres_fdw和容纳 a 。FOREIGN TABLE是否可以在本地服务器上为此定义一个触发器FOREIGN TABLE来识别INSERT远程服务器上的事件。如果有,请举个例子。


数据流:

  1. 将数据插入远程服务器上的表中。
  2. 识别触发触发器的本地服务器外部表上的插入。
  3. 触发器函数将数据写入其他表。
  4. 写入成功后,回帖到外部表

想法作为粗略的图表:


没有报告错误,但写入 table_b 似乎不成功。

这是我尝试过的:


0 投票
1 回答
397 浏览

sql - 当使用多个远程 fdw 源进行插入时,Postgres BIGSERIAL 不共享序列

我正在尝试使用外部数据包装器从其他两个 Postgres 数据库插入 Postgres 数据库中的表。目标是拥有一个独立于源的自动生成主键,因为其中会有两个以上。

我首先像这样定义表:

目标数据库:

来源数据库:

只要我仅从一个源插入,此解决方案就可以正常工作,当我尝试从另一个源插入时,没有指定 dummy_pk,我收到以下消息:

重复键 (dummy_pk)=(1)

因为 postgres 尝试插入 id 为 1,所以我相信每个源外部表使用的序列是不同的。我稍微更改了源表,试图让目标表的序列完成 id 的工作:

这次我得到了一个不同的错误:

NULL 值违反了 «dummy_pk » 列上的 NOT NULL 约束

因此,我相信源服务器向 dummy_pk 为空的目标发送查询,并且目标不会将其替换为默认值。

那么,有没有一种方法可以强制在源上执行的查询中使用目标的序列?也许我必须分享那个序列,我可以创建一个外来序列吗?我无法删除外部表上的列,因为我需要对它们进行读取访问。

谢谢!

0 投票
1 回答
284 浏览

postgresql - 如何在 postgresql 中使用 postgres_fdw 从另一个数据库中获取记录

我的案例我已经连接到另一个 GP DB 以将数据导入我的 PostgreSQL 表并编写 Java 调度程序以每天刷新它。但是当我每天尝试使用 SQL 函数获取记录时,它给了我一个错误Greenplum Database does not support REPEATABLE READ transactions。所以,任何人都可以建议我如何将数据从 GP 频繁加载到 postgres 而没有隔离麻烦。

我知道执行刷新表格

但是,由于交易块,我无法在功能中使用相同的功能。

0 投票
1 回答
852 浏览

postgresql - PostgreSQL - 创建外部表时如何导入自定义数据类型(使用 postgres-fdw)?

我正在尝试使用postgresql_fdwhttps://www.postgresql.org/docs/current/postgres-fdw.html)创建外部表视图。

尝试时IMPORT FOREIGN SCHEMA public FROM SERVER replica_db1 INTO db1,它会报告

type "public.custom_type" does not exist

与https://www.postgresql.org/docs/current/postgres-fdw.html中的相同

我想知道,如何自动将自定义数据类型复制到目标数据库中?

谢谢!

0 投票
2 回答
864 浏览

django - Django 模型对 postgres 外部表的引用 (clickhouse_fdw)

我有一个 Django 项目。我已经使用 clickhouse_fdw 将 clickhouse 表与 postgres 表连接起来。按照 clickhouse_fdw 的说明,在 postgres 中我做了:

它正在使用 psql 命令工作,但现在我想从 django 访问(我可以毫无问题地访问所有其他表)。我为 clickhouse 表添加了一个新模型,并在 django 中忽略了它的迁移和管理。

然后在 django shell 中我尝试过:

我得到的每一个查询:

同样来自 dbshel​​l:

有什么建议么?