如何获取所有对象的列表? \- PostgreSQL

新手上路,请多包涵

我需要数据库中包含的对象列表:表、序列等…


获取表格列表是我唯一能找到的。


关于我可以使用什么来获得一切的任何想法?

原文由 RadiantHex 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 926
2 个回答

您可以使用 INFORMATION_SCHEMA 表以及系统目录来执行此操作。

http://www.alberton.info/postgresql_meta_info.html

例如,

列出序列

SELECT relname
FROM pg_class
WHERE relkind = 'S'
AND relnamespace IN (
    SELECT oid
    FROM pg_namespace
    WHERE nspname NOT LIKE 'pg_%'
    AND nspname != 'information_schema'
);

列出触发器

SELECT trg.tgname AS trigger_name
  FROM pg_trigger trg, pg_class tbl
 WHERE trg.tgrelid = tbl.oid
   AND tbl.relname !~ '^pg_';
-- or
SELECT tgname AS trigger_name
  FROM pg_trigger
 WHERE tgname !~ '^pg_';

-- with INFORMATION_SCHEMA:

SELECT DISTINCT trigger_name
  FROM information_schema.triggers
 WHERE trigger_schema NOT IN
       ('pg_catalog', 'information_schema');

原文由 D‘Arcy Rittich 发布,翻译遵循 CC BY-SA 2.5 许可协议

另一种方法是将 pg_dump 与“仅模式”选项一起使用

pg_dump --schema-only databasename > fname.sql

这将为您提供 SQL 中的定义,以及如何创建对象。

原文由 Jiří Baum 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进