我希望 PostgreSQL 专家可以帮助解决这个问题;)为了避免责任问题,我们被要求在我们的数据库模式中将“患者”一词的所有实例替换为“客户” 。但是,我们确实使用 PGAdmin。
问题:我们的数据库“人”目前正在休假。
鉴于这不是一个小变化,那么改变架构和最小化中断的最有效和最有效的方法是什么?PGAdmin 是否有效地执行此操作,还是我需要走 SQL 路线?
谢谢!
我希望 PostgreSQL 专家可以帮助解决这个问题;)为了避免责任问题,我们被要求在我们的数据库模式中将“患者”一词的所有实例替换为“客户” 。但是,我们确实使用 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
and pg_dump
:
pg_dump -s [arguments to connect to your database] | sed 's/patient/client/g' > new_structure.sql
这(可能)为您提供了一个新模式,其中“患者”的每个实例都更改为“客户端”,但它对您的数据没有多大作用,因此您必须单独转储和加载数据,您可以没有能力轻易做到。Wayne 的答案更好,但无论哪种方式,您都可能需要同时进行大量的应用程序更改来进行协调。
如果可能的话,我会延迟,这不是你应该掉以轻心的改变。