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

mysql - PostgreSQL 通过外部数据包装器加入 2 个 mysql 表

我有 4 台服务器,2 台是 postgres,另外 2 台是 MySql,mysql_fdw 有问题,尝试将我的 postgres 表与外国 postgres 然后 mysql 的一个加入 - 一切都很好,查询的执行时间接近 0.05s - 所以一切都很好。

在那之后,我通过另一个mysql_fwd服务器将JOIN添加到另一个Mysql Server上的另一个mysql表中,这次执行时间变成了大约150-200s,这是不可接受的。有没有人找到解决方案或者一些技巧。谢谢!

0 投票
1 回答
2964 浏览

database - 如何在 PostgreSQL 的外部表 SELECT MAX(id) 查询中使用索引?

我有一个外部表(使用postgresql_fdw外部数据包装器),我需要找到最大 ID 来复制所有记录。当我运行SELECT MAX(id) FROM foreign_table它似乎没有使用索引:

SELECT MAX(id) FROM table当我在“真实”表上运行相同的查询 ( ) 时,它使用索引:

带有外表的数据库版本为 9.4.4,带有“真实”表的数据库版本为 9.3.9。

有没有办法在第一个查询中使用索引?

0 投票
1 回答
515 浏览

sql - PostgreSQL 可以在两个 SQL Server 存储过程之间执行连接吗?

这个问题与之前的一个问题有关:为什么关系数据库不支持从存储过程中选择?

在 SQL Server 上,您无法对存储过程执行连接(或从中选择)(请注意:存储过程与函数(SQL Server 术语中的表值函数)明显不同- 使用函数,您知道列在设计时返回,但通过过程,要返回的特定列直到运行时才知道)。

对于 SQL Server,确实存在一种“DBA 通常不允许”的方法,可以在其中完成这样的连接:OPENROWSET

所以问题是:

  1. PostgreSQL 可以在运行时才知道列的两个过程之间执行连接吗?

  2. 除了使用位于外部 3rd 方数据库中的存储过程(可能通过外部数据包装器或其他一些机制)之外,它可以做同样的事情吗?

0 投票
2 回答
2790 浏览

postgresql - 强制 postgres_fdw 使用密码?

我有两个数据库设置为同一个 Postgresql 9.4 数据库集群的一部分,我正在尝试使用 postgres_fdw 从另一个访问其中一个表。我已将其全部设置并以超级用户身份工作,但是当我尝试以普通用户身份访问外部表时,出现以下错误:

现在我明白这是因为我为某些子网设置了信任身份验证的服务器,包括它自己的。但是,在USER MAPPING我创建的 1 中,我确实指定了一个密码,希望这样做会强制它使用密码身份验证。显然没有这样的运气。

因此,我的问题是是否有任何方法可以解决这个有点繁重的要求?有没有办法强制此连接,或特定用户,或类似使用密码身份验证?或者以某种方式禁用该要求?还是我唯一的选择是将配置更改为需要密码并处理任何中断?

0 投票
0 回答
141 浏览

mysql - 如何获取 FOREIGN TABLE 的最后插入 id?

将行插入 PosgreSQL FOREIGN TABLE时,我不能使用 CURRVAL/LASTVAL,因为这些函数应该从 Postgre 序列中获取值,但是这里的行被插入到 MySQL 后端并且 AUTOINCREMENT 被更改。

有什么方法可以获取该字段的 LASTINSERTID 吗?
(mysql_fdw postgresql 扩展官方不支持这个

UPD
我对这个话题有一个建议。
为了解决这个问题,mysql_fdw 扩展似乎应该实现一些 UDF,这样我就可以为当前会话向 MySQL 后端SELECT MYSQL_FDW_LASTINSERT_ID发出问题SELECT LAST_INSERT_ID()

0 投票
1 回答
438 浏览

mysql - Citus 是否支持使用 mysql_fdw 创建分片?

该函数的 Citus文档master_get_table_metadata指出:

part_storage_type:用于表的存储类型。可以是“t”(标准表)、“f”(外来表)或“c”(柱状表)。

但是我搜索了整个文档,没有发现如何处理使用“f”(外部表)分区存储类型分发的表的示例。

我想可以使用以下方法创建初始外部表:

但是创建后如何分发这样的表?碎片将如何创建?

更新

我找到了这个

FOREIGN ('f') - 表示分片存储外部数据。(由分布式 file_fdw 表使用)

所以我的问题仍然存在:是否可以使用其他外部数据包装器,例如 mysql_fdw?

0 投票
0 回答
606 浏览

postgresql - 如何安全地杀死 postgres 进程?

我有一个 plpgsql 函数。该函数在通过 oracle_fdw 插件连接到 OracleXE 的某个外部表中删除和插入一些行。每分钟 cron 使用 psql 为 10 个不同的表启动 10 个此函数的实例。有时(每周少于一次)一个实例卡住了。它处于活动状态,但不能取消或终止。我可以通过 SIGKILL 杀死它,但这将取消所有其他 postgres 进程并启动恢复模式。是否可以在不使用 SIGKILL 的情况下停止此过程?(CentOS 7 上的 Postgres 9.3)

0 投票
1 回答
496 浏览

postgresql - 访问外部数据包装器中的 WHERE 子句条件

我通过一组 FDW 表从键/值存储中公开数据。除了当我只需要一个小子集时,Postgres 经常被迫扫描整个表之外,一切都很好。

例如:

SELECT * FROM person WHERE person_id='WLW001';

除非我将 LIMIT 1 添加到末尾,否则它将搜索所有人员行。

在我的键/值存储中,我只需将“WLW001”作为键的一部分传递即可直接找到正确的记录。

换句话说,我需要找到 WHERE 子句条件来优化我对键/值存储的查询。我浏览了许多示例 FDW 和文档,找不到任何描述使用 RelOptInfo 或 scan_clauses 列表或帮助函数来获取此信息的内容。

此外,如果 SELECT 语句包含参数标记,我似乎需要用该值替换标记。我在哪里找到价值?

0 投票
1 回答
3374 浏览

postgresql-9.4 - Postgres:外部表的外键

我有一张外表,例如:

以 id 作为该表的主键(在远程数据库中设置)。我想让一个本地表引用外部表,并在本地表上设置一个外键约束——例如:

但是,当我尝试添加外键约束时,出现错误:

是否可以向外部表添加外键约束?

0 投票
2 回答
457 浏览

postgresql - 国外的数据封装器 fdw_postgres 可以处理 PostGIS 的 GEOMETRY 数据类型吗?

我正在通过fdw_postgres从不同的数据库访问数据。它运作良好:

但是,当我查询data_typefdw_table 时,我得到以下结果: name text area double precision use text geom USER-DEFINED

fdw_postgres不能处理 PostGIS 的 GEOMETRY 数据类型吗在这种情况下,用户定义是什么意思?