问题标签 [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 投票
2 回答
1147 浏览

sql - Do databases besides Postgres have features comparable to foreign data wrappers?

I'm very excited by several of the more recently-added Postgres features, such as foreign data wrappers. I'm not aware of any other RDBMS having this feature, but before I try to make the case to my main client that they should begin preferring Postgres over their current cocktail of RDBMSs, and include in my case that no other database can do this, I'd like to verify that.

I've been unable to find evidence of any other database supporting SQL/MED, and things like this short note stating that Oracle does not support SQL/MED.

The main thing that gives me doubt is a statement on http://wiki.postgresql.org/wiki/SQL/MED:

SQL/MED is Management of External Data, a part of the SQL standard that deals with how a database management system can integrate data stored outside the database.

If FDWs are based on SQL/MED, and SQL/MED is an open standard, then it seems likely that other RDBMSs have implemented it too.

TL;DR:

Does any database besides Postgres support SQL/MED?

0 投票
1 回答
2182 浏览

sql-server - postgres_fdw 错误无法连接服务器

我写了这个 PostgreSQL 代码行,但是我遇到了以下错误:

错误:无法连接到服务器“server\sqlexpress”

SQL状态:08001

我究竟做错了什么?

我的代码:

在 Windows 8.1 上使用 PostgreSQL 9.3,在同一窗口上使用 MS SQL Express 2012

0 投票
1 回答
102 浏览

postgresql - Postgres 9.3 外部表 | 并非所有从外部视图返回的行

我有两个 PG 数据库。第一次我有视图v_articles,在第二个数据库上,我创建了外部数据表 ( ft_articles),它从外部数据源视图中读取所有条目v_articles(使用外部数据包装器)。到目前为止一切都很好,但是今天我注意到视图 v_articles 中的所有记录都没有在这个外部数据表中。你有什么建议可能导致这种行为。在大多数情况下,它都有效——在过去的几个月里,只有少数记录没有从视图“转移”v_articlesft_articles. 有什么建议我应该从哪里开始?

0 投票
0 回答
347 浏览

mongodb - 从 PostgreSQL 到 Mongodb 的外部数据包装器中的身份验证

我的服务器中安装了 mongodb 和 postgreSQL。我想使用mongo_fdw创建外部数据包装器。我已经为 mongodb 启用了身份验证。创建 fdw 时如何指定用户名/密码?

0 投票
2 回答
8548 浏览

postgresql - 在 Postgresql 中设置 Mysql 外部数据包装器

有人可以帮助我了解如何设置 postgresql 的 mysql_fdw 吗?我正在查看https://github.com/EnterpriseDB/mysql_fdw,但我不确定第一步是什么。

0 投票
0 回答
690 浏览

postgresql - 尝试为 win64 编译 odbc_fdw postgres 扩展

我想编译这个:https ://github.com/bluthg/odbc_fdw for Windows。我已经尝试了说明并搜索了所有内容,但无法弄清楚。

无论我做什么,我都会得到:

如果我使用 PGSX

如果我不使用 PGSX=1

我知道我需要 PGSX 来告诉编译器该做什么或手动提供该信息,但我似乎也做不到。

谢谢您的帮助

0 投票
0 回答
517 浏览

postgresql - 在 PostgreSQL 中使用外部数据包装器(可变文件名)

我正在运行 PostgreSQL 9.3 并希望将一些每日生成的 csv 文件导入特定的表中。我开始使用 FDW(外国数据包装器)并指向一个特定的 csv,我可以在其中查询和追加/更新表。但我还有两个需要: - 文件生成日期和源分支存在于文件名中,并且仅存在于那里。我需要获取此信息并将其也插入表中。- 正如预期的那样,文件名不是固定的,所以 FDW 不知道从哪里获取信息。

我考虑过使用一些 unix 工具来解决这个问题(尽管我的 Postgres 在 Windows 上运行),基本上对于列表中的每个文件(来自先前创建的索引),脚本将重命名文件并将分支和日期作为参数传递给 psql .exe 命令行,其中导入将来自 FDW 中的固定名称。

这会起作用,但这个脚本听起来有点像 hack,而不是一个非常“优雅”的解决方案。有没有人有更好的建议?

谢谢!

0 投票
1 回答
3895 浏览

postgresql - 错误:无法打开扩展控制文件“C:/Program Files/PostgreSQL/9.3/share/extension/mysql_fdw.control”:没有这样的文件或目录

我想在Windows中为 PostgreSQL 设置 MySQL FDW (Foreign Data Wrapper) 。

我在Windows中安装了 pgAdmin III ,它也安装了 postgreSQL。然后我在 pgAdmin 的 SQL 窗口中运行了这个命令。我收到了这个错误:

错误:无法打开扩展控制文件“C:/Program Files/PostgreSQL/9.3/share/extension/mysql_fdw.control”:没有这样的文件或目录

在我看来,我需要做一些先决条件。但是我没有找到任何适当的文档来逐步引导我。您可以重定向到此页面: https ://github.com/EnterpriseDB/mysql_fdw

但我认为这些说明适用于 Linux。我不知道如何使它们适用于 Windows。此外,前几条指令非常模糊。如果我在 Windows 桌面上运行 postgres,我需要做什么?我不知道 Windows 中有任何 make 命令或 export 命令。

0 投票
1 回答
2063 浏览

postgresql - 使用 postgres_fdw 加速包含多个自加入分组的视图

(警告道歉和黑客入侵......)

背景:

我有一个遗留应用程序,我想避免重写它的大量 SQL 代码。我正在尝试加速它所做的特定类型的非常昂贵的查询(即:低悬的果实)。

它有一个由transactions表表示的金融交易分类帐。当插入新行时,触发函数(此处未显示)为给定实体结转新余额。

某些类型的交易模型外部性(如进行中的支付)通过使用“相关”交易标记新交易,以便应用程序可以将相关交易组合在一起。

在我的测试数据集中,我有:

  • 总共大约 550 万行
  • 大约 370 万行没有“相关”事务
  • 大约 180 万行“相关”交易
  • 大约 55k 个不同的 entityids(客户)。

因此,大约 1/3 的事务行是与一些早期事务“相关”的更新。生产数据大约大 25 倍transactionid,不同大约大 8 倍entityid,1/3 的比率用于事务更新。

该代码查询一个特别低效的 VIEW 定义为:

典型的查询采用以下形式:

如您所见,该where entityid = 204425子句不会用于约束GROUP BY子查询,因此所有实体的事务将被分组,从而产生 55,000 个更大的子查询结果集和更长的查询时间......所有这些都达到平均 40 行(本例中为 71)在撰写本文时。

在不重写代码库的数百个 SQL 查询的情况下,我无法transactions进一步规范化表(比如将表连接到),其中许多以不同的方式使用自连接语义。initial_transactionsupdated_transactionsrelated

洞察力:

我最初尝试使用 WINDOW 函数重写查询,但遇到了各种各样的问题(另一个 SO 问题再次出现),当我看到www_fdw将其 WHERE 子句作为 GET/POST 参数传递给 HTTP 时,我很感兴趣无需太多重组即可优化非常幼稚的查询的可能性。

Postgresql 9.3 手册说:

F.31.4。远程查询优化

postgres_fdw 尝试优化远程查询以减少从外部服务器传输的数据量。这是通过将查询 WHERE 子句发送到远程服务器执行,并且不检索当前查询不需要的表列来完成的。为了降低查询错误执行的风险,WHERE 子句不会发送到远程服务器,除非它们仅使用内置数据类型、运算符和函数。子句中的运算符和函数也必须是 IMMUTABLE。

可以使用 EXPLAIN VERBOSE 检查实际发送到远程服务器执行的查询。

试图:

所以我认为也许我可以将 GROUP-BY 放入一个视图中,将该视图视为一个外部表,并且优化器将通过 WHERE 子句传递到该外部表,从而产生更有效的查询......

效果很好!

问题:

但是,当我尝试将其烘焙到 VIEW 中(有或没有另一层postgres_fdw)时,查询优化器似乎没有通过 WHERE 子句:-(

结果是:

如果我可以将该行为烘焙到 VIEW 或 FDW 中,那么我可以在极少数查询中替换 VIEW的名称,以提高效率。我不在乎对于其他用例(更复杂的 WHERE 子句)是否超级慢,我将命名 VIEW 以反映其预期用途。

有其use_remote_estimate默认值,FALSE但无论哪种方式都没有区别。

问题:

我可以使用一些技巧来使这个公认的黑客工作吗?

0 投票
1 回答
313 浏览

postgresql - 有人在 cloudera 5.2.0 中使用 hadoop_fdw 吗?

在将 hadoop_fdw 痛苦地安装到我们正在运行的 pgsql 9.3.4 中之后,我试图将它连接到 cloudera cluster 5.2.0,但没有成功。

有没有办法调试fdw?创建外部表并从中选择后,我收到一个错误 - 错误:无法连接到 Hive:没有更多数据可读取。

顺便说一句:一些旧版本的 hadoop_fdw 能够使用 url (jdbc://server:port/args),但不是最新版本,只有地址和端口。