首页 > 解决方案 > 在 Postgres 中查询以获取模式名称

问题描述

我需要一个逻辑/更清晰的查询来获取我创建的所有架构名称

select schema_name  
from "information_schema"."schemata"

SELECT nspname
FROM pg_catalog.pg_namespace;

返回具有我不需要的系统创建模式的模式名称的超集。

我只想要我创建的模式名称。

标签: sqlpostgresql

解决方案


information_schema.schemata尝试从pg_*模式和information_schema本身过滤:

SELECT * from information_schema.schemata 
WHERE NOT schema_name LIKE 'pg_%' AND schema_name <> 'information_schema'

postgres正如 Gordon 所建议的那样,排除 拥有的模式仅适用于postgres不是任何其他模式的所有者而是系统模式的所有者的条件。如果您使用 user 创建了一个模式postgres,它将被排除在结果集中。


推荐阅读