Postgres,plpgsql:有没有办法从存储过程内部连接到其他数据库?
我有两个数据库,其中一个是通过另一个数据库过滤后的数据提供的,现在我正在使用 perl 脚本对外部数据库执行查询,将结果存储在 csv 文件中,并使用 \COPY sytnatx 将其加载到本地数据库
有没有办法编写 plpgsql 函数,该函数将连接到外部数据库并在本地数据库中加载过滤后的数据(我知道这可以在 ie.plperl 中完成,但我搜索更多“本机”方式)
I have two DB's one is feed by filtered data from another, now i'm using perl script witch executes query on foreign DB, stores a result in a csv file, and loads it to local DB using \COPY sytnatx
Is there a way to write plpgsql function witch will connect to foreign DB and load filtered data in local DB ( I know it can be done in ie. plperl, but i search more "native" way )
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
而且 DBI-LINK 支持更多数据库:)
And there is the DBI-LINK that supports much more databases :)
目前,PostgreSQL有dblink,但仅支持连接到其他PostgreSQL实例 - 遗憾的是,不是任何其他数据库。
Currently, PostgreSQL has dblink, but it only supports connecting to other PostgreSQL instances - not any other database, sadly.
我会推荐 PL/Proxy,它更容易使用 - 只需在目标数据库上编写所需的存储过程(有一些小的警告,例如不使用枚举类型),并在源上声明相同的函数,PL/Proxy 将处理通讯。它是 Skype 分布式数据库架构的基础,并且已做好生产准备。
I would recommend PL/Proxy, which is significantly easier to use - just write the desired stored procedure on the target database (with some minor caveats, like not using enumerated types), and declare the same function on the source, PL/Proxy will handle the communications. It is the basis for Skype's distributed database architecture and is production-ready.