postgresql - PostgreSQL:更改选择查询返回的所有表
问题描述
我在 postgres 11.2 db 上运行此查询:
SELECT relname
FROM pg_stat_user_tables
WHERE n_mod_since_analyze=0 AND relname LIKE '%'
AND relname NOT IN (SELECT relname FROM pg_class WHERE array_length(reloptions,1)>0);
这将返回我需要禁用自动清理的表列表。我试图想出一种方法来ALTER TABLE pg_stat_user_tables.relname SET (autovacuum_enabled = false);
在我的查询语句返回的所有表上运行。谷歌搜索不断让我回到更改表格列。是否可以只获取从此查询返回的表名并将其传递给 ALTER TABLE?
解决方案
尝试使用 psql CLI 和 \gexec 内部命令:
SELECT format('ALTER TABLE %s SET (autovacuum_enabled = false);',lt.relname)
FROM
(
SELECT relname
FROM pg_stat_user_tables
WHERE n_mod_since_analyze=0
AND relname LIKE '%'
AND relname NOT IN (SELECT relname FROM pg_class WHERE array_length(reloptions,1)>0)
) lt;
\gexec
执行输出:
ALTER TABLE p SET (autovacuum_enabled = false);
ALTER TABLE
ALTER TABLE t1 SET (autovacuum_enabled = false);
ALTER TABLE
ALTER TABLE t2 SET (autovacuum_enabled = false);
ALTER TABLE
推荐阅读
- java - 复制在 Go 中创建的 CRL
- import - 导入 Fortran 无格式二进制文件
- apache-kafka - Kafka 在哪里存储默认的 Broker 级别配置?
- laravel-5 - 无法禁用persistent_menu
- azure - Azure Active Directory - 在 java 中设置令牌到期
- php - POST /wp-admin/admin-ajax.php 400(错误请求)
- typescript - Typescript 泛型类型推断是更改对象形状后函数的“任意”
- python-3.x - 如何使用 Python Selenium 登录 gmail
- sql-server - 如何在 SQL Server 2012 中对月份列中的 varchar 周进行排序?
- javascript - 使用 css 动画时,是否有任何方法可以使连续动画按给定顺序无限重复