仅列出 postgresql 中的父表和未分区表

List only parent and unpartition tables in postgresql

我有一个 table 有很多分区,还有其他未分区的 table。如果我执行 \d,它会列出所有分区并且列表非常大。我正在寻找一种仅列出未分区和父 table 的方法。有没有办法做同样的事情?

感谢任何帮助

\dt本身没有开关,但可以修改底层查询:

SELECT n.nspname as "Schema",
  c.relname as "Name",
  CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' WHEN 'p' THEN 'table' WHEN 'I' THEN 'index' 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','p','')
      AND n.nspname <> 'pg_catalog'
      AND n.nspname <> 'information_schema'
      AND n.nspname !~ '^pg_toast'
      AND c.relpartbound IS NULL
      AND NOT EXISTS (SELECT 1 FROM pg_catalog.pg_inherits i
                      WHERE i.inhrelid = c.oid)
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;

我添加了 AND c.relpartbound IS NULLNOT EXISTS 子句。