Я бы предпочел последнее решение. Вы можете собрать имена схем в файл (одна схема на строку) в psql
:
\o change_schema.sql
\t on
SELECT n.nspname
FROM pg_catalog.pg_namespace n
WHERE n.nspname !~ '^pg_' AND n.nspname <> 'information_schema';
-- reset the output
\o
\t off
Тогда вы можете легко сделать следующее:
Иметь сценарий изменения DDL (например, change_schema.sql
), без ссылки на включающую схему
SET search_path TO :schema;
BEGIN;
...
...
ALTER TABLE orders
ADD COLUMN last_modified timestamp;
...
...
COMMIT;
Затем вы можете превратить каждую строку списка схем в строку, подобную
psql -h dbhost -d targetdb -f change_schema.sql -v schema=<schema_name>
например, с помощью простой sed
команды - тогда вам просто нужно выполнить эти команды. Конечно, вы можете превратить его в правильный скрипт оболочки, если хотите.
Postgres
вместоPostgreSQL
совершенно нормально.