是否有postgres命令列出/删除所有物化视图?

我正在我的代码中创建多个视图,每次代码运行时,我都希望删除迄今为止生成的所有物化视图。是否有任何命令将列出Postgres的所有具体化视图或删除所有这些视图

纯SQL

全部显示:

选择oid::regclass::text
来自PGU班
其中relkind='m';

根据从regclasstext的转换中当前的search\u路径,名称会自动双引号并在需要时符合模式

在系统目录中,pg_类物化视图标记为relkind='m'
手册:

m=物化视图

删除所有内容,可以使用此查询生成所需的SQL脚本:

选择“删除物化视图”| |字符串_agg(oid::regclass::text,”,)
来自PGU班
其中relkind='m';

返回:

删除物化视图mv1、搜索路径中的某些模式非mv2。。。

一个DROP物化视图语句可以处理多个物化视图。如果有嵌套视图,则可能需要在末尾添加层叠

检查生成的DDL脚本,确保在执行它之前正确无误。是否确实要从数据库中的所有架构中删除allmv?你有这样做的特权吗?(当前,新的标准安装中没有具体化视图。)

psql中的Meta命令

在默认的交互式终端psql中,您可以使用meta命令:

\dm

在服务器上执行此查询:

选择n.nspname作为"模式",
c、 重新命名为;名称;,
案例c.relkind当'r'时,然后是'table'当'v'时,然后是'view'当'm'时,然后是'materialized view'当'i'时,然后是'index'当'S'时,然后是'sequence'当'S'时,然后是'special'当'f'时,然后是'foreign table'当'p'时,然后是'partitioned table'当'i'时,然后是'partitioned index'结束为'quot;“类型”;,
pg_catalog.pg_get_userbyid(c.relowner)as"“业主”;
来自pg_catalog.pg_c类
左连接pg_catalog.pg_命名空间n ON n.oid=c.relnamespace
其中c.relkind('m','')
和n.nspname&lt>'PGU目录'
和n.nspname&lt>'信息"模式"
还有n.name!~'^pg_吐司'
和pg_目录。pg_表_可见(c.oid)
以1,2的顺序;

可简化为:

选择n.nspname作为"“模式”;
,c.重新命名为;名称“;
,pg_catalog.pg_get_userbyid(c.relowner)as"“业主”;
来自pg_catalog.pg_c类
左连接pg_catalog.pg_命名空间n ON n.oid=c.relnamespace
其中c.relkind='m'
和n.nspname&lt>'PGU目录'
和n.nspname&lt>'信息"模式"
还有n.name!~'^pg_吐司'
和pg_目录。pg_表_可见(c.oid)
以1,2的顺序;

发表评论