如何大规模替换PostgreSQL数据库模式中的结构?

如何大规模替换PostgreSQL数据库模式中的结构?,postgresql,pgadmin,Postgresql,Pgadmin,我希望PostgreSQL专家能帮上忙;)为了避免责任问题,我们被要求将数据库中的所有单词“patient”替换为“client”。但是,我们使用PGAdmin 问题:我们的数据库“家伙”目前正在度假 考虑到这不是一个小的改变,什么是改变模式和最小化中断的最有效的方法?PGAdmin是否能有效地实现这一点,还是我需要执行SQL路线 谢谢 Postgresql能够更改列和表名: alter table patients rename to clients; alter table visits r

我希望PostgreSQL专家能帮上忙;)为了避免责任问题,我们被要求将数据库中的所有单词“patient”替换为“client”。但是,我们使用PGAdmin

问题:我们的数据库“家伙”目前正在度假

考虑到这不是一个小的改变,什么是改变模式和最小化中断的最有效的方法?PGAdmin是否能有效地实现这一点,还是我需要执行SQL路线


谢谢

Postgresql能够更改列和表名:

alter table patients rename to clients;
alter table visits rename column patient_id to client_id;
您可以在事务中对这些更改进行分组,以便所有更改要么立即发生,要么根本不发生:

begin;
alter table this...
alter table that...
...
commit;

数据库中有使用它们的程序,这些程序经常与模式中的名称相关联。您的客户端程序是否能够自动适应模式更改?

如果您有这种奢侈,一种非常简单的方法是使用
sed
pg_dump

pg_dump -s [arguments to connect to your database] | sed 's/patient/client/g' > new_structure.sql
这(可能)为您提供了一个新的模式,将“patient”的每个实例都更改为“client”,但它对您的数据没有多大作用,因此您必须单独转储和加载数据,这可能是您无法轻松完成的。Wayne的答案更好,但不管怎样,您可能需要同时协调大量的应用程序更改


如果可能的话,我会推迟,这不是一个你应该掉以轻心的改变。

这似乎是一件必须做的事情。我希望有人能给出一个好的答案,但我更感兴趣的是原因,而不是答案。@WayneConrad我们的一位客户参与了大量开发工作,并被用作参考案例。鉴于他们的服务为癌症治疗提供交通工具,他们要求我们更改代码和文档中的所有术语,以便与实际医疗实践无关。@WayneConrad p.s.love dilbert;)非常感谢。还感谢你提出了一个有趣的问题。幸运的是,我可以在本地测试所有内容,然后使用GIT推动更改。我同意我可能会采用Wayne的方法,但如果我对PGSQL更有经验,我可能会采用这种方法。谢谢修正案:我还意识到Wayne的方法在数据库进化中更容易管理,因为更改可以分开,但这一贡献帮助我学会了!谢谢是的,我们可以使客户机软件适应模式更改,幸运的是,不需要进行数据更改,只需更改模式即可。这将在本地进行测试,然后通过数据库evolution和GIT推送。注意视图、存储函数和触发器中使用的表名和列名。