我需要知道PostgreSQL中的列類型(即varchar(20)
)。我知道我可能在psql中使用\d
的東西,但我需要用select查詢來完成。
這在PostgreSQL中可能嗎?查詢PostgreSQL中表的模式細節?
6
A
回答
6
可以使用Postgres的使用以下查詢完整的描述表:
SELECT
a.attname as Column,
pg_catalog.format_type(a.atttypid, a.atttypmod) as Datatype
FROM
pg_catalog.pg_attribute a
WHERE
a.attnum > 0
AND NOT a.attisdropped
AND a.attrelid = (
SELECT c.oid
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname ~ '^(TABLENAME)$'
AND pg_catalog.pg_table_is_visible(c.oid)
)
Tith這一點,你將檢索列名和數據類型。
也可以使用-E
選項
$ psql -E
然後簡單\d mytable
將輸出使用的Postgres描述表查詢開始PSQL客戶端。它適用於每個psql describe命令。
2
是的,看看information_schema。
10
有一個簡單得多在PostgreSQL的方式來獲取列的類型。
SELECT pg_typeof(col)::text FROM tbl LIMIT 1
當然,表格必須至少包含一行。你只能得到沒有類型修飾符的基類型(如果有的話)。如果您需要,也可以使用下面的替代方法。
您也可以使用常量函數。該manual on pg_typeof()
。
對於空(或)表,你可以使用查詢系統目錄pg_attribute
獲取列的完整列表和它們各自的類型依次爲:
SELECT attnum, attname AS column, format_type(atttypid, atttypmod) AS type
FROM pg_attribute
WHERE attrelid = 'myschema.mytbl'::regclass -- optionally schema-qualified
AND NOT attisdropped
AND attnum > 0
ORDER BY attnum;
手冊上format_type()
和object identifier types像regclass
。
相關問題
- 1. PostgreSQL查詢模式
- 2. PostgreSQL的UNIX進程的詳細查詢
- 3. 瞭解postgresql/sql的細節
- 4. Django的 - 查詢集獲得所有相關的細節模型
- 5. TClientDataset在主細節不關閉細節查詢
- 6. 的PostgreSQL - 查詢表3
- 7. XML到PostgreSQL表的查詢
- 8. Doctrine2/DBAL + Postgresql - public。在Doctrine查詢中缺少模式|空查詢的結果
- 9. 節點js和postgresql查詢鎖?
- 10. PostgreSQL的查詢
- 11. PostgreSQL的查詢
- 12. LINQ查詢只有那些細節
- 13. LINQ查詢扁平化與子細節
- 14. PostgreSQL 9.3:交叉表查詢
- 15. PostgreSQL查詢表列註釋?
- 16. 從細節表
- 17. 代表細節
- 18. Postgresql:表名/模式混淆
- 19. 如何結合哈姆雷特列表中單獨查詢中的「細節」?
- 20. 環流式SQL查詢 - PostgreSQL的
- 21. postgresql在多個模式上查詢的存儲過程
- 22. PostgreSQL的 - 從查詢
- 23. 在PostgreSQL的查詢
- 24. PostgreSQL的UPSERT查詢
- 25. PostgreSQL的XMLELEMENT查詢
- 26. @ Html.DisplayNameFor的細節模型
- 27. 數據表模態細節顯示
- 28. 建議 - 如何模型細節列表
- 29. Postgresql查詢
- 30. 查詢JSON PostgreSQL
優秀的答案!我遇到了另一個問題,雖然:http://stackoverflow.com/questions/4336465/using-query-to-set-the-column-type-in-postgresql – David 2010-12-02 15:13:52
我不認爲你需要那個正則表達式匹配,`` c.relname〜'^(TABLENAME)$'`相當於`c.relname ='TABLENAME'`。雖然很好的答案。 – 2010-12-02 18:11:20