2009-12-21 75 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