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

あなたが贅沢を持っているなら、本当に簡単な方法はとであるでしょsedpg_dump

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

これにより、(潜在的に)「患者」のすべてのインスタンスが「クライアント」に変更された新しいスキーマが取得されますが、データにはあまり影響しないため、データを個別にダンプおよびロードする必要があります。簡単にできる能力がありません。ウェインの答えの方が優れていますが、どちらの場合でも、同時に調整するためにアプリケーションを大幅に変更する必要があります。

可能であれば遅らせますが、これはあなたが軽く取るべき変更ではありません。

于 2012-01-24T23:58:03.730 に答える