问题标签 [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.
mysql - PostgreSQL 通过外部数据包装器加入 2 个 mysql 表
我有 4 台服务器,2 台是 postgres,另外 2 台是 MySql,mysql_fdw 有问题,尝试将我的 postgres 表与外国 postgres 然后 mysql 的一个加入 - 一切都很好,查询的执行时间接近 0.05s - 所以一切都很好。
在那之后,我通过另一个mysql_fwd服务器将JOIN添加到另一个Mysql Server上的另一个mysql表中,这次执行时间变成了大约150-200s,这是不可接受的。有没有人找到解决方案或者一些技巧。谢谢!
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。
有没有办法在第一个查询中使用索引?
sql - PostgreSQL 可以在两个 SQL Server 存储过程之间执行连接吗?
这个问题与之前的一个问题有关:为什么关系数据库不支持从存储过程中选择?
在 SQL Server 上,您无法对存储过程执行连接(或从中选择)(请注意:存储过程与函数(SQL Server 术语中的表值函数)明显不同- 使用函数,您知道列在设计时返回,但通过过程,要返回的特定列直到运行时才知道)。
对于 SQL Server,确实存在一种“DBA 通常不允许”的方法,可以在其中完成这样的连接:OPENROWSET
所以问题是:
PostgreSQL 可以在运行时才知道列的两个过程之间执行连接吗?
除了使用位于外部 3rd 方数据库中的存储过程(可能通过外部数据包装器或其他一些机制)之外,它可以做同样的事情吗?
postgresql - 强制 postgres_fdw 使用密码?
我有两个数据库设置为同一个 Postgresql 9.4 数据库集群的一部分,我正在尝试使用 postgres_fdw 从另一个访问其中一个表。我已将其全部设置并以超级用户身份工作,但是当我尝试以普通用户身份访问外部表时,出现以下错误:
现在我明白这是因为我为某些子网设置了信任身份验证的服务器,包括它自己的。但是,在USER MAPPING
我创建的 1 中,我确实指定了一个密码,希望这样做会强制它使用密码身份验证。显然没有这样的运气。
因此,我的问题是是否有任何方法可以解决这个有点繁重的要求?有没有办法强制此连接,或特定用户,或类似使用密码身份验证?或者以某种方式禁用该要求?还是我唯一的选择是将配置更改为需要密码并处理任何中断?
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()
postgresql - 如何安全地杀死 postgres 进程?
我有一个 plpgsql 函数。该函数在通过 oracle_fdw 插件连接到 OracleXE 的某个外部表中删除和插入一些行。每分钟 cron 使用 psql 为 10 个不同的表启动 10 个此函数的实例。有时(每周少于一次)一个实例卡住了。它处于活动状态,但不能取消或终止。我可以通过 SIGKILL 杀死它,但这将取消所有其他 postgres 进程并启动恢复模式。是否可以在不使用 SIGKILL 的情况下停止此过程?(CentOS 7 上的 Postgres 9.3)
postgresql - 访问外部数据包装器中的 WHERE 子句条件
我通过一组 FDW 表从键/值存储中公开数据。除了当我只需要一个小子集时,Postgres 经常被迫扫描整个表之外,一切都很好。
例如:
SELECT * FROM person WHERE person_id='WLW001';
除非我将 LIMIT 1 添加到末尾,否则它将搜索所有人员行。
在我的键/值存储中,我只需将“WLW001”作为键的一部分传递即可直接找到正确的记录。
换句话说,我需要找到 WHERE 子句条件来优化我对键/值存储的查询。我浏览了许多示例 FDW 和文档,找不到任何描述使用 RelOptInfo 或 scan_clauses 列表或帮助函数来获取此信息的内容。
此外,如果 SELECT 语句包含参数标记,我似乎需要用该值替换标记。我在哪里找到价值?
postgresql-9.4 - Postgres:外部表的外键
我有一张外表,例如:
以 id 作为该表的主键(在远程数据库中设置)。我想让一个本地表引用外部表,并在本地表上设置一个外键约束——例如:
但是,当我尝试添加外键约束时,出现错误:
是否可以向外部表添加外键约束?
postgresql - 国外的数据封装器 fdw_postgres 可以处理 PostGIS 的 GEOMETRY 数据类型吗?
我正在通过fdw_postgres从不同的数据库访问数据。它运作良好:
但是,当我查询data_type
fdw_table 时,我得到以下结果:
name text
area double precision
use text
geom USER-DEFINED
fdw_postgres不能处理 PostGIS 的 GEOMETRY 数据类型吗?在这种情况下,用户定义是什么意思?