pg 批量更改拥有者
记录一下。
为什么会有这个问题的原因是因为执行用的是管理员用户,pg默认拥有者是执行sql的用户也就是管理员,这样会导致创建的用户会没有这个表的权限
查询出sql语句复制直接执行就行
SELECT 'alter table ' || nsp.nspname || '.' || cls.relname || ' owner to 用户名;' || chr ( 13 ) FROM pg_catalog.pg_class cls, pg_catalog.pg_namespace nsp WHERE nsp.nspname IN ( '模式名' ) AND cls.relnamespace = nsp.oid AND cls.relkind = 'r' ORDER BY nsp.nspname, cls.relname;
用函数去批量执行
create or replace function update_table_owner() returns void as $$ declare rowdata RECORD; begin for rowdata in (select concat('${模式名}.', table_name) as table_name from information_schema.tables where table_schema = '${模式名}') loop execute 'alter table '||rowdata.table_name||' owner to ${模式名}'; end loop; end; $$ language plpgsql; select update_table_owner();