我正在我的代码中创建多个视图,每次代码运行时,我都希望删除迄今为止生成的所有物化视图。是否有任何命令将列出Postgres的所有具体化视图或删除所有这些视图
纯SQL
全部显示:
选择oid::regclass::text
来自PGU班
其中relkind='m';
根据从regclass到text的转换中当前的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<>;'PGU目录'
和n.nspname<>;'信息"模式"
还有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<>;'PGU目录'
和n.nspname<>;'信息"模式"
还有n.name!~'^pg_吐司'
和pg_目录。pg_表_可见(c.oid)
以1,2的顺序;