问题标签 [foreign-data-wrapper]

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 投票
3 回答
5681 浏览

database - 保持 PostgreSQL (FDW) 外部模式同步

使用带有postgres_fdw扩展名的 Postgres 9.6,有什么方法可以使本地模式中的表与远程数据库上的表保持同步?我经常需要将新表添加到远程数据库上的包装模式中,并希望通过 FDW 在本地访问它们,而不必在外部模式或单个表来/去时删除并重新导入它们。

我正在寻找一个命令,例如REFRESH FOREIGN SCHEMA schema_name.

0 投票
1 回答
883 浏览

postgresql-9.6 - 使用 postgres_fdw 创建外部表时翻译主机名时出错

编辑:我已经解决了这个问题。剧透,它与 psql 或 fdw 无关。这是一个 DNS 问题,因为我在未配置内部 DNS 服务器的 docker 机器上运行本地数据库。

我正在尝试在我的数据库中创建一个外部表(来自另一个 postgres 数据库)。但是,当我运行 select 语句时,外部数据包装器说它无法翻译提供的主机名:

那么我的主机名有什么问题?我可以使用psql -U myuser -W -h db7.ap.int.unavco.org -d pgs3. 我创建外部表的脚本非常简单,并且以此处的文档为模型。

0 投票
0 回答
144 浏览

sql-server - 外部数据包装器 - 映射 nvarchar 数据类型

我已经通过tds_fdw扩展将 SQL Server 数据库与 PostgreSQL 数据库链接起来。

我将 SQL Server 表映射到 PostgreSQL 外部表。连接成功。

我在将nvarchar数据类型映射到 Postgres 时遇到问题。我映射nvarcharvarchar,因为 SQL ServervarcharnvarcharPostgreSQL 相同。但是nvarchar列没有正确映射(存储?为某些符号)。

如何正确地nvarchar从 SQL Server 映射到 Postgresql 中的等效数据类型?

我用 UTF8 编码创建了 Postgresql 数据库

0 投票
0 回答
580 浏览

postgresql-9.4 - Postgres_fdw LEFT JOIN 与外部表

我有大约 400 毫秒的基本查询和执行时间:

解释:


当我用外部表添加另一个 LEFT JOIN 时出现问题,执行时间延长到 1.5 分钟:

解释:


国外表:

国外服务器上的原始表:

我的本地表是分区的,主表:

分区示例:


我曾尝试将外部表放在 CTE 中,但这只会将时间减少到 20 秒。

任何想法或解决方案表示赞赏。

0 投票
1 回答
232 浏览

sql - Postgres 外部数据包装器问题与“is null”where 子句

我正在尝试使用查询构建报告,通过 FDW 访问不同的 postgres 数据库。

我猜为什么它会这样工作。没有 where 子句的第一个查询很好:

但是添加 where caluse 会使这个查询慢一百倍(40s vs 0.1s):

EXPLAIN VERBOSE 的结果:

解释分析的结果:

表的数据计数相对较小。几乎学生表中的所有行在 learning_end_date 列中都有 NULL。

学生 ~ 1000 行。人〜15000。

似乎 Postgres 在使用 FDW 过滤 NULL 方面存在问题,因为该查询再次执行得很快:

EXPLAIN VERBOSE 的结果:

解释分析的结果:

尝试在 learning_end_date 添加索引,但没有任何效果。

我需要更改什么以使用“IS NULL”where 子句更快地执行查询?任何想法将不胜感激!

0 投票
0 回答
973 浏览

postgresql - 使用外部数据包装器将 Access 表链接到 PostgreSQL 数据库

我是 postgres 的新手,所以这个问题对其他人来说可能是一个相对容易的问题。但是,我花了很多令人沮丧的时间试图找出解决方案。我有一个元数据访问数据库,必须保持更新才能将记录发送给其他组。我还有一个使用 PostgreSQL 和 PGAdmin 的数据库,它也有这些相同的元数据表。目前,Postgres 数据库中的这些表通过将 Access 表导出为 excel 文件,然后将它们导入 SQL 表来手动更新。这不是最有效的过程,如果有人在运行任何查询之前忘记检查他们正在使用 Access 中的最新数据,则可能会导致 SQL 数据库出错。所以我想将我的 Access 数据库中的一些表与我的 Postgres 数据库集成。
最初,我尝试仅安装驱动程序以将 Access 表直接导出到 Postgres,这可以正常工作,但不是我想要的方式,因为它只是引入了一个我仍然需要手动更新的表。据我了解,我可以在 postgres 中创建一个服务器连接以进行访问,然后使用外部数据包装器引入更新的数据。我尝试使用 ogr_fdw。

当我尝试:

CREATE SERVER metadata FOREIGN DATA WRAPPER ogr_fdw OPTIONS ( datasource 'H:\Databases\20170712.accdb', format 'ODBC' );

我收到:错误:无法连接到数据源“H:\Databases\20170712.accdb” SQL 状态:HV00D

当我尝试: CREATE SERVER metadata FOREIGN DATA WRAPPER ogr_fdw OPTIONS ( datasource 'H:\Databases\20170712.accdb', format 'ACCDB' );

我收到:错误:无法找到格式“ADDCB”提示:请参阅http://www.gdal.org/ogr_formats.html上的格式列表。
我也试过 MDB 并收到同样的错误。但是,MDB 是网站给出的代号,但它说它需要 JDK/JRE 来编译,我不确定这是否是我需要的另一种类型的驱动程序或者它是什么。

当我尝试: CREATE SERVER metadata FOREIGN DATA WRAPPER ogr_fdw OPTIONS ( datasource 'H:\Databases\20170712.mdb', format 'ODBC' );

我收到:错误:无法连接到数据源“H:\Databases\20170712.mdb” SQL 状态:HV00D 提示:无法为 DRIVER=Microsoft Access Driver (*.mdb) 初始化与 DSN 的 ODBC 连接;DBQ=H: \Databases\20170712.mdb, [Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序

但是,在查看 ogr_fdw 的 github 帮助页面后,我认为不需要 ODBC 和特殊驱动程序https://github.com/pramsey/pgsql-ogr-fdw/blob/master/FAQ.md

其中很多可能是由于我在阅读大量此类内容时对术语的了解有限。我的 Access 数据库也是一个 .accdb 文件,但由于它不起作用,我也尝试使用 mdb 和 ODBC 作为“格式”。如果有人有任何建议,我将不胜感激。
谢谢!

0 投票
2 回答
1724 浏览

database - 外部表可以与本地表同名吗?

我的问题是我正在使用 PostgreSQL 数据库并想导入一个vfm从其他数据库命名的表,比如B. 但是在我当前的数据库中有一个同名的表(A)。我的查询中出现错误,说关系已经存在。

我想知道是否有办法将外部模式导入到具有其他名称的表中,或者(最好)我们是否可以直接查询另一个数据库而无需将外部模式导入 PostgreSQL?

我一直无法为此找到完美的解决方案。

0 投票
0 回答
2971 浏览

postgresql - 将数据从 MS Access 数据库导入 PostgreSQL 数据库

我在 MS Access 数据库中有一个表,我想导出到 PostgreSQL 数据库。每隔 2 个月左右,我想将 Access 表中的所有记录移动到 Postgres 中的一个表中。

现在,我正在使用 Access 中的 Export to ODBC 选项来执行此操作,但每次它都导出为 Postgres 中的全新表。有没有办法让我定期将 Access 表中的记录附加到我的 Postgres 数据库中的现有表中?我遇到了 FDW 的选项,但我不熟悉如何安装/使用它。

我是使用 PostgreSQL 的新手,几乎没有使用 Access 以外的数据库的经验,所以任何输入/建议将不胜感激。

0 投票
1 回答
899 浏览

postgresql - Azure PostgreSQL 外部数据包装器 postgres_fdw

我正在尝试使用 Azure DB for PostgreSQL 实例中的 PostgreSQL 外部数据包装器 (postgres_fdw) 扩展。如 Azure DB for PostgreSQL 中所述,应支持外部数据包装器:https ://docs.microsoft.com/en-us/azure/postgresql/concepts-extensions

我设法为用户创建服务器和映射,但是当我尝试导入表或模式时,出现以下错误:

用公共 IP 替换主机名时,我得到以下信息:

在 Azure DB for PostgreSQL 实例的防火墙选项中,我已经有了从 0.0.0.0 到 255.255.255.255 的 AllowAllIps 规则。是否还有其他配置可以访问 Azure、DNS 或防火墙配置之外的服务器?

0 投票
0 回答
504 浏览

postgresql - 节点和数据库之间的 AWS RDS PostgreSQL 10 外部表不起作用

我有三台运行 PostgreSQL 10.1 的 RDS 服务器(于 2018 年 3 月在 AWS 中创建)。我需要在每个节点上的数据库之间以及不同节点上的数据库之间创建外部表。这是我的 sql 示例来设置它

执行时我得到的错误是这个(来自rds1):

无论我尝试查询位于同一 RDS 上还是不同 RDS 上的外部表,我都会收到此错误。

我认为这是 postgres 用户的权限问题,但我尝试授予所有内容,但没有任何乐趣。

有人对这可能是什么有任何见解吗?我在这上面花了很多时间。

rds1 和 rds2 不是真正的主机名,我使用的是实际的主机名。