Как массово заменить структуру в схеме базы данных PostgreSQL? - PullRequest
1 голос
/ 25 января 2012

Я надеюсь, что эксперт PostgreSQL может помочь с этим;) Чтобы избежать проблем ответственности, нас попросили заменить все экземпляры слова «пациент» на «клиент» в нашей базе данных схема .Однако мы используем PGAdmin.

Подвох: наша база данных "парень" в настоящее время находится в отпуске.

Учитывая, что это не маленькое изменение, то, чтосамый эффективный и эффективный способ изменить схему и свести к минимуму сбои?PGAdmin делает это эффективно или мне нужно идти по пути SQL?

Спасибо!

Ответы [ 2 ]

1 голос
/ 25 января 2012

Если у вас есть роскошь, по-настоящему простой способ будет с sed и pg_dump:

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

Это (потенциально) дает вам новую схему, которая имеет каждый экземпляр "пациента"изменился на «клиент», но он мало что делает для ваших данных, поэтому вам придется выгружать и загружать данные по отдельности, что может оказаться затруднительным.Ответ Уэйна лучше, но в любом случае, вам, вероятно, придется вносить значительные изменения в приложение, чтобы координировать его одновременно.

Я бы отложил, если это возможно, это не то изменение, которое вы должны принять слегка.

1 голос
/ 25 января 2012

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;

В базах данных есть программы, которые их используют, и эти программы часто привязаны к именам в схеме. Ваши клиентские программы таковы, что они автоматически адаптируются к изменениям схемы?

...