Eu tenho uma configuração de banco de dados de vários inquilinos e preciso adicionar algumas colunas. Estou usando esquemas (e caminho_de_pesquisa) para particionar meus usuários, por isso estou procurando uma maneira onipresente de aplicar uma alteração no esquema DDL a todos os meus bancos de dados. Inicialmente, pensei que poderia fazê-lo como uma única consulta (cursor em pg_catalog), mas pensar em uma chamada de linha de comando psql -f
pode ser a maneira preferida.
postgresql
postgresql-9.2
Chris
fonte
fonte
Postgres
vez dePostgreSQL
está perfeitamente bem.Respostas:
Eu preferiria a última solução. Você pode coletar os nomes dos esquemas em um arquivo (um esquema por linha) em
psql
:Então você pode facilmente fazer o seguinte:
Ter um script de alteração de DDL (por exemplo
change_schema.sql
), sem referência ao esquema de inclusãoEm seguida, você pode transformar todas as linhas da lista de esquemas em uma linha como
com um
sed
comando simples , por exemplo - basta executar esses comandos. Obviamente, você pode transformá-lo em um shell script adequado, se quiser.fonte
EXECUTE
executar as instruções como SQL dinâmico.Apenas para completar, outra abordagem é fazer um loop em todos os esquemas e executar a alteração com SQL dinâmico no PL / PgSQL, por exemplo:
fonte