查看postgresql表时仅显示表名

时间:2013-06-18 15:03:03

标签: sql postgresql

所以我不知道怎么做这个,我一直在阅读文档并搜索,但我似乎找不到任何东西。 \ d给了我一个关于它们的所有表和信息的很好的列表,但我希望能够将命令发送到postgresql数据库并将其传输到一个只包含表名的文本文件中。

3 个答案:

答案 0 :(得分:1)

使用以下开关运行psql。它将显示psql发送到目录的内部命令以获取此类信息:

-E
--echo-hidden
     

回显\ d和其他反斜杠命令生成的实际查询。   您可以使用它来研究psql的内部操作。这是   相当于在psql中设置变量ECHO_HIDDEN。

http://www.postgresql.org/docs/current/static/app-psql.html

e.g:

~ $ psql -E
SET
psql (9.2.4)
Type "help" for help.

denis=# \dt
********* QUERY **********
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' WHEN 'f' THEN 'foreign table' END as "Type",
  pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','')
      AND n.nspname <> 'pg_catalog'
      AND n.nspname <> 'information_schema'
      AND n.nspname !~ '^pg_toast'
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;
**************************

       List of relations
 Schema | Name | Type  | Owner 
--------+------+-------+-------
 public | test | table | denis
(1 row)

答案 1 :(得分:1)

除了Denis解决方案之外,您可能还需要:

select table_name from information_schema.tables;

但这必然会导致缺少架构信息的问题。

答案 2 :(得分:0)

这就是我想出来帮助打印表格的名称

SELECT c.relname as "Name"
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','')
  AND n.nspname <> 'pg_catalog'
  AND n.nspname !~ '^pg_toast'
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1;