1

我希望 PostgreSQL 专家可以帮助解决这个问题;)为了避免责任问题,我们被要求在我们的数据库模式中将“患者”一词的所有实例替换为“客户” 。但是,我们确实使用 PGAdmin。

问题:我们的数据库“人”目前正在休假。

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

谢谢!

4

2 回答 2

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;

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

于 2012-01-24T23:52:46.050 回答
1

如果你有奢侈品,一个非常简单的方法是使用sedand pg_dump

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

这(可能)为您提供了一个新模式,其中“患者”的每个实例都更改为“客户端”,但它对您的数据没有多大作用,因此您必须单独转储和加载数据,您可以没有能力轻易做到。Wayne 的答案更好,但无论哪种方式,您都可能需要同时进行大量的应用程序更改来进行协调。

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

于 2012-01-24T23:58:03.730 回答