2013-06-26 49 views
2

我有2個DB與同一個用戶在同一臺​​服務器上:執行加入2 DB

  • ckan_default
  • datastore_default

ckan_default的關係是:

Schema |    Name    | Type | Owner 
-------+-------------------------------+-------+---------- 
public | resource      | table | ckanuser 
public | resource_group    | table | ckanuser 
public | package      | table | ckanuser 
.... 

數據存儲的關係e_default是:

Schema |     Name     | Type | Owner 
    -------+--------------------------------------+-------+---------- 
    public | 1bc7932e-2507-467b-8c12-c9f321b760f7 | table | ckanuser 
    public | 449138df-e089-41f2-8939-dcee53a31bc1 | table | ckanuser 
    public | 7235f781-1b16-4abf-ac04-8d68fa62e432 | table | ckanuser 
    .... 

我不會加入2 DB ON ckan_default.resource.id = datastore_default 「關係NAME」。

怎麼樣?

+0

[從其他postgres數據庫讀取數據]的可能重複(http://stackoverflow.com/questions/17275598/read-data-from-other-postgres-database) –

回答

3

我不認爲你可以。

可以使用dblink擴展從A查詢數據庫B,但查詢將從數據庫A的數據上下文中分離出來。這就是postgresql的工作原理。

編輯:您可以填充從DBLINK查詢的結果視圖,然後使用它:在我發佈的鏈接

CREATE VIEW myremote_pg_proc AS 
    SELECT * 
    FROM dblink('dbname=postgres', 'select proname, prosrc from pg_proc') 
    AS t1(proname name, prosrc text); 
SELECT * FROM myremote_pg_proc WHERE proname LIKE 'bytea%'; 

例子。

1

PL/Proxy是另一種選擇,類似於dblink。過去我曾經用它來在服務器之間進行交流,我的用例是一個窮人的分佈式數據庫集羣。其他服務器上的數據被拉入某些大型報告中,並且工作得很好。儘管服務器都處於同一託管位置,但如果其他數據庫在地理位置上分散開來,那麼您將爲網絡延遲和數據傳輸時間付出額外的代價。