问题标签 [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 回答
8200 浏览

database - 如何使用 postgres_fdw 连接到 localhost?

这个想法是我有一个名为 的本地数据库northwind,并且postgres_fdw我想连接另一个名为testlocalhost 的数据库(远程连接模拟,例如当我的数据库中的表被更新时,在其他数据库中执行某些操作,例如保存到历史记录等。 )。所以我打开 psql 控制台并输入:

正如我在A Look at Foreign Data Wrappers链接中发现的那样。接下来我也跟着教程:

(我假设用户和密码应该与我在 Hibernate 中用于访问数据库的用户名和密码相同,并且在我的情况下current_user,教程中的位置是postgres因为这是我的 PgAdmin III 中存在的唯一角色)。然后我创建了外表:

没关系,我可以schema/foreign tables在 PgAdmin III 中找到它。但是当我尝试时,SELECT * FROM groups我得到了:

是否有可能是因为当我CREATE SERVER app_db..不使用 localhost 服务器名称时?我不能,因为它的名称带有空格(PostgreSQL 9.3),并且在创建时会导致一些奇怪的问题。先感谢您。 更新:即使我在本地主机上创建另一个名为`app_db 的服务器,它也不起作用。

0 投票
2 回答
665 浏览

sql - Postgres 9.4 外部数据包装器“FDW”无法在不同端的插入之间发送串行数据类型

我有一个简单的 2 个 CentOS 服务器配置,使用两个 postgres-9.4 来模拟 Postgres-9.4 中的 FDW 场景。

我使用 fdw 将一个简单的表与另一台服务器上的另一个数据库链接起来,从两端读取工作正常,问题在于串行主键,它不同步;换句话说,如果我从原始表插入,从外部表插入后,它不会同步计数。反之亦然。

0 投票
3 回答
1193 浏览

sql - SQL:创建具有枚举列的外部表时出错

我正在foo_tabledatabase_a 中创建一个外部表 ( )。foo_table住在 database_b 中。 foo_table有一个枚举 ( bar_type) 作为其列之一。因为此枚举在 database_b 中,所以在 database_a 中创建外部表失败。database_a 不理解列类型。在 database_a 中运行以下命令

CREATE FOREIGN TABLE foo_table (id integer NOT NULL, bar bar_type) SERVER database_b

一个得到错误:

ERROR: type "bar_type" does not exist

我可以bar_type在 database_a 中创建一个副本,但这感觉是重复的,并且可能是未来不一致的原因。有人会对处理的最佳实践有想法吗?

0 投票
1 回答
158 浏览

postgresql - Postgresql外表存在子句

我正在运行两个不同的 postgres 9.3 实例(一个用于生产,一个用于开发/测试)。我想将生产中的表的一个子集复制到开发中。

假设我要复制的表定义为

我要复制的子集是所有在缓存表中具有 user_id 的用户(在生产中),这是一个比用户表小得多的表

我已经在我的开发数据库上设置了一些外部表来访问这两个表(分别命名为 foreign_users 和 foreign_user_id_subset),我想做如下查询:

此查询有效,但我担心性能。解释的结果给了我这样的东西:

认为正在发生的事情是我的开发数据库将请求发送到我的生产数据库,它创建了 foreign_user_id_subset 的临时哈希(生产上的 user_id_subset)并在生产上进行哈希检查。这样,唯一通过网络(在数据库之间)发送的是初始请求,然后是选择查询的结果。这是真的?

另一种想法是在我的生产数据库上创建此请求结果的“临时”(不能是真正的 TEMP 表 b/c 我需要一个外部表),然后构建一个外部表并执行SELECT * from development 在外表上。

(应该注意的是,我的生产数据库是比我的开发数据库更昂贵/性能更高的 RDS 实例)

0 投票
0 回答
528 浏览

postgresql - 从 Foxpro (.dbf) 数据库同步/转换 PostgreSQL 表

我们正在使用一个使用 Foxpro 数据库的业务管理系统,我们希望能够将这些表中的一些信息同步到 PostgreSQL,以便我们在管理系统之外做一些其他事情。

我想知道将 Foxpro (.dbf) 数据库中的数据同步到 PostgreSQL-9.4 的最佳方法是什么。

我尝试使用 PostgreSQL 内部的 Foreign Data Wrapper 来连接 ODBC 连接,但我无法让它工作。

0 投票
0 回答
584 浏览

postgresql - 外部数据包装器在本地主机上不起作用

我有一个带有 postgresql 9.2 的虚拟机和另一个带有 postgresql 9.4 的虚拟机。我想创建外部数据包装器,这就是我所做的:

当我执行时我没有错误,但是当我这样做时:

选择返回此错误:

ERREUR:无法连接到服务器“si_orleans_db” 详细信息:致命:身份验证 Ident échouée pour l'utilisateur « user »

但是当我更换时:

经过

“从 db_SAMPLE 中选择 *”完美运行

192.168.10.158 = 使用 postgresql 9.2 的虚拟机的 IP 地址

你有解决我问题的想法吗?

多谢

0 投票
0 回答
315 浏览

postgresql - mysql_fdw 输入语法错误

我在 PostgreSQL (9.4.4) 中实现 mysql_fdw。我已经创建了外部表,它们工作正常,除了一件事:对于数据类型为 bytea 的列 idvisitor 中的某些行,它会引发以下错误

错误:bytea 类型的输入语法无效 ********** 错误 **********

错误:bytea 类型的无效输入语法 SQL 状态:22P02

示例:具有两列的表访问:id SERIAL, idvisitor bytea id 从 1 到 1000 的千行

  • 从访问中选择 *;#错误
  • SELECT * FROM visit WHERE id BETWEEN 1 和 900;#没有错误
  • SELECT * FROM 访问 WHERE id = 901; #错误
  • 从 902 和 1000 之间 id 的访问中选择 *;#没有错误
  • 从访问中选择 id,其中 id=901;#没有错误

像这样继续,我可以识别触发错误的行。如果我在 MySQL 中执行相同的查询,它会静默执行而不会引发任何错误。

0 投票
1 回答
982 浏览

sql - 插入时使用PostgreSQL外部数据包装器,批量插入行是否更有效?

所以,如果我有许多记录要插入到外部表中,我可以这样做(伪代码):

或这个:

根据我的直觉,第二种似乎更有效,因为所有数据都是一次性发送的,重复的 SQL 关键字更少。

但是,我不知道第二个是否真的会导致同样多的往返行程。我也不知道如果有很多行,第二个是否会冒着达到某种语句长度限制的风险?

我正在使用 postgres 9.3

0 投票
1 回答
1351 浏览

postgresql - postgres 外部数据包装器远程触发器找不到远程表

远程架构:

本地架构:

现在在本地,当我运行INSERTon时some_table_view_fdw,我得到relation not found: some_table.

  • 我可以从 some_table_view_fdw 中选择就好了(some_table_view 只返回 * from some_table)。
  • 如果在本地(在远程)运行,插入到 some_table_view 工作得很好。触发器做了它应该做的事情。
  • 请注意, some_table_view_fdw 没有直接引用 some_table ,所以我猜触发器必须正在运行,但是由于某种原因找不到它自己的表?

我正在使用 postgres 9.3

0 投票
0 回答
1071 浏览

postgresql - PostgreSQL:如何转储国外数据

我有 PostgreSQL 9.4 和外部表。

现在我需要通过 Postgres 从外部表中转储数据。我只使用pg_dump定义了外部表,但没有数据。

你能帮我找出如何做到这一点 - 转储外国数据吗?

ps 我可以select * from <foreign table>通过psql将这些数据放入文件中,但这会产生令人难以置信的文件格式,它具有良好的人类可见表示,但很难自动操作这些数据以及更多其他问题。