跨 2 个数据库的 PostgreSQL 连接
我是 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要查看 db_link 贡献。
顺便说一句,如果您熟悉 C,还有一个名为 外国数据包装器。它允许使用纯 SQL 操作几乎任何源。 Twitter 示例:
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: