跨 2 个数据库的 PostgreSQL 连接

发布于 2024-11-14 20:44:51 字数 512 浏览 1 评论 0原文

我是 PostgreSQL 新手。我在 PostgreSQL 9.0 中有 2 个数据库,db1 和 db2,对于 db2,我具有只读访问权限。我想创建一个存储函数,否则可以通过 JOIN 或嵌套查询轻松完成,这是 PostgreSQL 无法跨数据库完成的。

在 db1 中,我有 table1,我可以在其中查询一组外键,我可以使用这些外键在 db2 中的 table2 中搜索记录,例如:

SELECT * from db2.table2 WHERE db2.table2.primary_key IN (
    SELECT db1.table1.foreign_key FROM db1.table1 WHERE
        db1.table1.primary_key="whatever");

在 Postgres 中执行此操作的最佳实践是什么?我无法在 db2 中使用临时表,并且将外键作为在 db2 中运行的存储函数中的参数传递似乎不是一个好的解决方案。

注意:键都是VARCHAR(11)

I am new to PostgreSQL. I have 2 databases in PostgreSQL 9.0, db1 and db2, and with db2 I have read only access. I want to create a stored function that would be otherwise easily accomplished with a JOIN or a nested query, something PostgreSQL can't do across databases.

In db1, I have table1 where I can query for a set of foreign keys keys that I can use to search for records in a table2 in db2, something like:

SELECT * from db2.table2 WHERE db2.table2.primary_key IN (
    SELECT db1.table1.foreign_key FROM db1.table1 WHERE
        db1.table1.primary_key="whatever");

What is the best practice for doing this in Postgres? I can't use a temporary tables in db2, and passing in the foreign keys as a parameter in a stored function running in db2 doesn't seem like a good solution.

Note: the keys are all VARCHAR(11)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

汹涌人海 2024-11-21 20:44:51

您需要查看 db_link 贡献。

顺便说一句,如果您熟悉 C,还有一个名为 外国数据包装器。它允许使用纯 SQL 操作几乎任何源。 Twitter 示例

SELECT from_user, created_at, text FROM twitter WHERE q = '#postgresql';

You'll want to look into the db_link contrib.

As an aside if you're familiar with C, there also is a cute functionality called foreign data wrappers. It allows to manipulate pretty much any source using plain SQL. Example with Twitter:

SELECT from_user, created_at, text FROM twitter WHERE q = '#postgresql';
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文