我试图更改PostgreSQL数据库(版本> 8.2)及其表的所有者.
我读了这个解决方案:
但这是最好的方法吗(对于最新版本的PostgreSQL)?似乎有一个REASSIGN OWNED函数更好,但是这个函数改变了old_role拥有的每个数据库,不是吗?我只想要一个数据库.
喜欢这篇文章:
我不会改变所有者postgres,这是现在最好的方式吗?
先感谢您
我想到的两种方法是:
1)首先更改数据库名称,然后右键快速脚本将当前表的所有者更改为旧表.
ALTER DATABASE <dbname> OWNER TO <newowner>;
\o altertable.sql
SELECT 'ALTER TABLE ' || table_name || ' OWNER TO <newowner>; ' FROM information_schema WHERE table_schema = <oldowner> and table_catalog = '<dbname>';
\o
\i altertable.sql
Run Code Online (Sandbox Code Playgroud)
以上将生成您的命令,然后将它们弹出到文件中并执行它.
2)另一种选择是使用pg_dump以纯文本模式转储数据库,然后使用搜索和替换来更改相应的字符串:
pg_dump -Fp -f dbbackup.dmp <dbname>
vi dbbackup.dmp
:%s/oldowner/newowner/g
save and exit
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.