2013-01-22 34 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開始並根據需要進行修改。