2011-07-06 55 views
0

如何使用單個sql語句檢索postgresql中特定表的所有列的數據類型,大小,精度和比例?該表可以包含數據類型的列('int2','int4','int8','float4','float8','numeric','varchar','char','date')。 '時間戳')。如果精度/標度不適用於特定的數據類型,我們可以將其保留爲空。檢索postgresql列的數據類型,大小,精度和規模

我不應該爲此使用INFORMATION_SCHEMA,因爲雖然此模式是內置的,但我們可以放棄此模式。所以我用這個模式編寫代碼,如果客戶放棄這個模式,我的代碼就會中斷。我只想使用pg_catalog表/視圖。

+1

如果你知道你要使用的表/視圖,你有什麼需要我們呢?我認爲你正在尋找RentACoder.com ... –

+0

我使用pg_attribute,pg_class和pg_type,但我沒有得到正是我想要的單個sql語句..所以,我張貼在這裏。好的,其他人對我的問題有想法?順便說一句,RentACoder.com是什麼? – vchitta

+0

我不知道如何放棄'INFORMATION_SCHEMA'。有人可以解釋嗎? –

回答

0

information_schema中的表是系統表上的視圖。如果你在psql裏使用這個命令,你會得到生成視圖視圖定義:

\dS+ information_schema.columns 

你仍然有一些工作要做,作爲類型強制轉換爲用戶友好的輸出也基於關於information_schema,但這不應該太難。

編輯:在之前的版本8.4,你必須使用\ d +,不是\ DS +

+0

好的,但是這也是基於information_schema..Can任何機構只能寫pg_catalog tables/views? – vchitta

+1

實際上,視圖定義基於pg_catalog表/視圖,除了make-it-friendly-for-output類型轉換之外。您可以複製該視圖定義並對其進行修改以刪除信息模式類型轉換,現在您擁有獨立於information_schema存在的查詢。 –