Tengo una configuración de base de datos multiinquilino y necesito agregar algunas columnas. Estoy usando esquemas (y search_path) para particionar a mis usuarios, por lo que estoy buscando una forma ubicua de aplicar un cambio de esquema DDL a todas mis bases de datos. Inicialmente, pensé que podría hacerlo como una sola consulta (cursor en pg_catalog), pero pensar que una invocación de línea de comandos psql -f
podría ser la forma preferida.
postgresql
postgresql-9.2
Chris
fuente
fuente
Postgres
lugar dePostgreSQL
está perfectamente bien.Respuestas:
Preferiría la última solución. Puede recopilar los nombres de esquema en un archivo (un esquema por línea) en
psql
:Entonces puedes hacer fácilmente lo siguiente:
Tener un script de cambio DDL (por ejemplo,
change_schema.sql
), sin referencia al esquema incluidoLuego puede convertir cada línea de la lista de esquemas en una línea como
con un
sed
comando simple , por ejemplo, entonces solo tiene que ejecutar estos comandos. Por supuesto, puede convertirlo en un script de shell adecuado si lo desea.fuente
EXECUTE
ejecutar las declaraciones como SQL dinámico.Solo para completar, otro enfoque es recorrer todos los esquemas y ejecutar el cambio con SQL dinámico en PL / PgSQL, por ejemplo:
fuente