如何在PostgreSQL数据库模式中批量替换结构?

时间:2012-01-24 23:34:36

标签: postgresql pgadmin

我希望PostgreSQL专家可以帮助解决这个问题;)为了避免责任问题,我们已经被要求在我们的数据库架构中用“client”替换“patient”一词的所有实例。但是,我们使用PGAdmin。

捕获:我们的数据库“家伙”目前正在度假。

鉴于这不是一个小小的改变,更改架构和最小化中断的最有效和最有效的方法是什么? PGAdmin是否有效地执行此操作,还是需要执行SQL路由?

谢谢!

2 个答案:

答案 0 :(得分:1)

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;

数据库具有使用它们的程序,并且这些程序经常与架构中的名称绑定。您的客户端程序是否会自动适应架构更改?

答案 1 :(得分:1)

如果您有奢侈品,那么sedpg_dump就会采用一种非常简单的方式:

pg_dump -s [arguments to connect to your database] | sed 's/patient/client/g' > new_structure.sql

这(可能)会为您提供一个新模式,将每个“患者”实例更改为“客户端”,但它对您的数据没有太大作用,因此您必须单独转储和加载数据,你可能没有办法轻松做到这一点。 Wayne的答案更好,但不管怎样,您可能需要进行大量的应用程序更改才能同时进行协调。

如果可能的话,我会拖延,这不是你应该掉以轻心的改变。