2009-12-21 168 views

回答

1
+0

pg_catalog通常不應該被觸及。有information_schema,它通常好多了。 – 2009-12-21 20:02:06

+0

@depesz:該評論與您的​​'psql -E'-tip相矛盾。 – 2009-12-21 20:21:01

+0

是和不是。如果我要從頭開始寫選擇 - 我會使用information_schema。另一方面 - psql -E顯示準備好的SQL。不便攜式,但隨時可以使用。 – 2009-12-22 11:16:35

1

下面是我在日誌中看到,當我在psql的shell中運行\d

SELECT n.nspname as "Schema", 
     c.relname as "Name", 
     CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' END as "Type", 
     r.rolname as "Owner" 
    FROM pg_catalog.pg_class c 
     JOIN pg_catalog.pg_roles r ON r.oid = c.relowner 
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace 
    WHERE c.relkind IN ('r','v','S','') 
      AND n.nspname NOT IN ('pg_catalog', 'pg_toast') 
     AND pg_catalog.pg_table_is_visible(c.oid) 
    ORDER BY 1,2; 
2

運行psql -E,然後輸入所有有趣的\ x的命令(如\ DT,\ d表),並閱讀它將顯示的內容。

0

還有pg_dump --schema-only

+0

它很難算作「運行sql來獲取表格描述」。它是:運行命令查看創建表的sql。 – 2009-12-21 20:02:42

+0

這不是他寫的,也不是像[XY-問題](http://www.perlmonks.org/index.pl?node=XY%20problem)永遠不會發生---我也寫*也*。 – 2009-12-21 20:17:31