视图与表的依赖关系
背景
出于数据安全或者使数据简单化的考虑,在数据仓库的建设过程中,通常采用视图的方式实现;时间久了之后,有时候视图与表的关系会变的很复杂,那么,我们如何找出他们的依赖关系呢?
1、基础信息
1.1 表信息
1.2 直接依赖表的视图
1.3 依赖视图的视图
2、查询直接的依赖关系
3、已知视图,递归查询依赖的表
WITH RECURSIVE get_view_dependency
AS
(
SELECT a.objname, a.refobjname, a.relobjkind, a.refobjname path
FROM pg_catalog.gs_view_dependency a
where a.objname = 'view2_test_220704' --(把这个条件改为两个条件schema+对象名)
UNION ALL
SELECT b.objname, b.refobjname, b.relobjkind, cte.path ||' , '|| b.refobjname path
FROM pg_catalog.gs_view_dependency b
INNER JOIN get_view_dependency cte
ON cte.refobjname=b.objname
)
SELECT * FROM get_view_dependency;
4、已知表,查询引用的视图
--通过表查询引用的视图
WITH RECURSIVE get_view_dependency
AS
(
SELECT a.refobjname, a.objname, a.relobjkind, a.objname path
FROM pg_catalog.gs_view_dependency a
where a.refobjname = 'test_220704' --(把这个条件改为两个条件schema+对象名)
UNION ALL
SELECT b.refobjname, b.objname, b.relobjkind, cte.path ||' , '|| b.objname path
FROM pg_catalog.gs_view_dependency b
INNER JOIN get_view_dependency cte
ON cte.objname=b.refobjname
)
SELECT * FROM get_view_dependency
;
查询结果如下图:
- 点赞
- 收藏
- 关注作者
评论(0)