2013-01-22 35 views
0

我有一个应用程序使用PostgreSQL,但也与MSSQL上的第三方控制数据库进行交互。该数据有时绑在一起密切,以至于它成为需要做这样的事情:从PostgreSQL函数访问Microsoft SQL Server上的数据

select thing_from_pg, thing_from_ms_crossover_function(thing_from_pg) -- etc 

目前我实现plperl thing_from_ms_crossover_function。有没有办法在plpgsql或者其他什么的情况下做到这一点,所以我不需要为这种情况启动一个plperl解释器?

另一种选择显然是从我的客户端应用程序访问这两个数据库,但这远比上面的视图语法方便。

+0

你看过dblink模块吗? http://www.postgresql.org/docs/current/static/dblink.html –

+0

听起来很有希望,但它只支持到其他PostgreSQL数据库的连接。 – Kev

+1

啊,对。我总是忘记这一点。如果你是冒险的,你可能想尝试一个外国数据包装(odbc_fdw或jdbc_fdw):http://wiki.postgresql.org/wiki/Foreign_data_wrappers –

回答

1

你有两个基本选项,好的是三个基本选项。

第一个是使用DBI-Link,然后通过您的pl/pgsql或pl/perl函数访问它。关于DBI-Link的好处是,它相对较老和成熟。如果它适合你,我会从那里开始。

第二种选择是使用外部数据包装。

第三种选择是在类似pl/perl的东西中编写一个更一般的框架,您可以从pl/pgsql调用该框架。然而,那时你基本上正在重新研发DBI-Link,所以我认为你最好从DBI-Link开始并根据需要进行修改。