postgresql - 如何列出postgres中所有没有分区的表

标签 postgresql metadata

这与 this question 密切相关它描述了如何列出 postgres 数据库中架构中的所有表。查询 select * from information_schema.tables 完成这项工作。就我而言,架构中的某些表已分区,在这种情况下,上面的查询列出了完整的表以及所有分区作为单独的条目。

如何获得仅包含完整表而不包含各个分区的列表?

例如,如果架构包含一个名为“example”的表,该表在“bla”列上使用两个值“a”和“b”进行分区,则 information_schema.tables 将有一个“example”条目,并且然后是两个附加条目“example_part_bla_a”和“example_part_bla_a”。我考虑过根据与“部分”或类似内容的子字符串匹配进行排除,但这对表的命名方式做出了假设,因此某些表名称会失败。必须有更好的方法来做到这一点。

最佳答案

您不会在 information_schema 中找到该信息;您必须直接查询目录:

SELECT c.relname
FROM pg_class AS c
WHERE NOT EXISTS (SELECT 1 FROM pg_inherits AS i
                  WHERE i.inhrelid = c.oid)
  AND c.relkind IN ('r', 'p');

关于postgresql - 如何列出postgres中所有没有分区的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68983250/

相关文章:

postgresql - 正在使用的 Postgres.app 端口

PostgreSQL:如何启用 autovacuum?

ruby - 将 Redis 与 Postgresql 同步

ios - 编辑 PHAssets 时如何保留原始照片元数据?

testing - 是否可以在测试脚本中使用元数据?

c - PostgreSQL中C函数的最高性能?

php - 无法连接到 PostgreSQL 服务器

python - 使用 Python 访问 MP3 元数据

.net - .NET 源代码 XML 注释如何保留在程序集元数据中?

php - 从 Doctrine 注释生成 UML 类图的工具