问题

如何修改PostgreSQL数据库中所有表的所有者?

我尝试了ALTER TABLE * OWNER TO new_owner但它不支持星号语法.

  最佳答案

REASSIGN OWNED 命令

注意:由于@trygvis 在下面的答案中提到, REASSIGN OWNED 命令是可用的,因为至少8.2版本,并且是一个更简单的方法.


由于您正在更改所有表的所有权,您可能也想要视图和序列.这是我做的:

表:

 for tbl in `psql -qAt -c "select tablename from pg_tables where schemaname = 'public';" YOUR_DB` ; do  psql -c "alter table \"$tbl\" owner to NEW_OWNER" YOUR_DB ; done
 

序列:

 for tbl in `psql -qAt -c "select sequence_name from information_schema.sequences where sequence_schema = 'public';" YOUR_DB` ; do  psql -c "alter sequence \"$tbl\" owner to NEW_OWNER" YOUR_DB ; done
 

意见:

 for tbl in `psql -qAt -c "select table_name from information_schema.views where table_schema = 'public';" YOUR_DB` ; do  psql -c "alter view \"$tbl\" owner to NEW_OWNER" YOUR_DB ; done
 

您可能可以使用 DRY ,因为更改语句对于所有三个都是相同的。


  相同标签的其他问题

postgresql