即使作为 postgres 登录运行此查询,也仅显示当前登录创建的视图的 view_definition。
select table_schema as schema_name, table_name as view_name, view_definition
from information_schema.views
where table_schema not in ('information_schema', 'pg_catalog')
order by schema_name, view_name;
有没有某种方法可以获取所有视图的视图定义,无论是谁创建的?
如果不是,我打算在我的 etl 调度程序中做一项工作,将所有视图重新分配给所有者 postgres。
小智 5
如果当前用户(甚至是管理员)不是视图的所有者,Information_schema.views 会为 view_definition 返回 NULL [1]。这就是 Postgres 中的设计方式,并且由于 Redshift 基于 Postgres 8.0.2,我认为它具有类似的行为。
v_generate_view_ddlAWS GitHub 存储库中的 [2] 管理视图可以帮助获取所有视图定义。
参考资料:
[1] Postgres 文档 - https://www.postgresql.org/docs/8.0/infoschema-views.html
[2] Redshift 管理视图 - https://github.com/awslabs/amazon-redshift-utils/ blob/master/src/AdminViews/v_generate_view_ddl.sql
| 归档时间: |
|
| 查看次数: |
2078 次 |
| 最近记录: |