2008-09-26 17 views
0

我是pgsql的新手。我有這幾個questionss:Q's on pgsql

1)我知道這是可能通過<schema>.<table_name>訪問列,但是當我試圖訪問像<db_name>.<schema>.<table_name>列就拋出錯誤,如

Cross-database references are not implemented 

如何實現呢?

2)我們有10個以上的表格,6個有2000+行。把它們全部保存在一個數據庫中可以嗎?還是應該創建數據庫來維護它們?

3)從上面有2000多行的問題表中,對於特定的進程我需要幾行數據。我創建了視圖來獲取這些行。例如:一張表包含員工的詳細信息,他們分爲3種類型;經理,建築師和工程師。非常明顯的事情,這張表沒有得到每一個進程...過程使用從它讀取數據... 我認爲有兩種方式獲取數據SELECT * FROM emp WHERE type='manager',或者我可以爲經理,建築師和工程師創建視圖並獲取數據SELECT * FROM view_manager

你能提出任何更好的方法來做到這一點嗎?

4)視圖是否也需要存儲空間,比如表格呢?

Thanx提前。

回答

1
  1. 跨數據庫存在於PostGreSQL多年。您必須在數據庫名稱前面加上數據庫名稱的前綴(當然,還有權在其上查詢)。你會跟這樣的事情:

    SELECT alias_1.col1,alias_2.col3 FROM TABLE_1爲ALIAS_1,database_b.table_2作爲alias_2 WHERE ...

    如果你的數據庫是在另一個實例上,那麼你」我需要使用dblink contrib。

  2. 這個問題沒有做出反應。請細化。
  3. 通常,視圖用於簡化重用它們的其他查詢的編寫。就你而言,正如你所描述的那樣,也許這個存儲過程更適合你的需要。
  4. 不,期望視圖定義。
+0

關於1) - 即使數據庫位於同一個羣集上,也不是(無dblink)。 – 2008-10-02 15:59:58

0

1:解決方法是打開到其他數據庫的連接,(如果使用psql(1))將其設置爲當前連接。但是,只有當您不試圖在兩個數據庫中連接表時,這纔會起作用。

0

1)這意味着它不是Postgres支持的功能。我不知道有什麼辦法可以創建一個在多個數據庫上運行的查詢。

2)這對一個數據庫很好。單個數據庫可以包含數十億行。

3)不要打擾創建視圖,查詢非常簡單。

4)除查詢定義外,視圖不需要數據庫中的空間。