如何获取数据库中所有非分区表的名称?我使用PostgresSQL 9.6
我如何才能获取分区表的名称?
现在我在我的数据库中有了部分名称,指定了一个表名,但是我需要做到这一点。
SELECT i.inhrelid::regclass AS child
FROM pg_inherits i
WHERE i.inhparent = 'public.documento'::regclass;
答案 0 :(得分:0)
<强> upodated 强>
用于分区表:
select distinct inhparent::regclass from pg_inherits
而不是分区smthlike:
select oid::regclass::text relation
from pg_class where relkind = 'r'
except
select distinct inhparent::regclass::text
from pg_inherits
except
select distinct inhrelid::regclass::text
from pg_inherits
;
注意:要过滤结果,只需使用where
,例如
with l as (
<code above>
)
select * from l where relation not like 'pg_%';
答案 1 :(得分:0)
pg_inherits
记录有关表和索引继承层次结构的信息。
如果只需要获取所有分区表(不包括分区索引),则可以使用:
select relnamespace::regnamespace::text schema_name, oid::regclass::text table_name from pg_class
where relkind = 'p' and oid in (select distinct inhparent from pg_inherits)
order by schema_name, table_name;