将所有的PostgreSQL表更改所有者

4
我需要一个postgresql语句来遍历public模式下的所有表并更新所有者。我知道手动命令是 ALTER TABLE public.<table_name> OWNER TO <username>;,但我不确定如何将其放入循环格式的脚本中以便遍历每个表并更新所有者。这是针对postgres 9.6数据库的(将在测试数据库上运行)。谢谢。

也许这个链接可以帮助你:https://tableplus.com/blog/2018/04/postgresql-how-to-grant-access-to-users.html - jian
1个回答

10

使用psql连接到数据库并运行命令:

SELECT format(
          'ALTER TABLE public.%I OWNER TO user_name',
          table_name
       )
FROM information_schema.tables
WHERE table_schema = 'public'
  AND table_type = 'BASE TABLE' \gexec
\gexec 将查询结果中的每一行作为语句执行。
请升级。

谢谢!我们计划很快升级,我意识到我们使用的是不支持/旧版本。 - sc-leeds
这只适用于psql,而不适用于pgcli - undefined
@Hritik 就像我在答案中所说的那样。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接