Saya lebih suka solusi yang terakhir. Anda dapat mengumpulkan nama skema ke file (satu skema per baris) di 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
Maka Anda dapat dengan mudah melakukan hal berikut:
Miliki skrip pengubah DDL (misalnya, change_schema.sql
), tanpa referensi ke skema yang disertakan
SET search_path TO :schema;
BEGIN;
...
...
ALTER TABLE orders
ADD COLUMN last_modified timestamp;
...
...
COMMIT;
Kemudian Anda dapat mengubah setiap baris daftar skema menjadi garis seperti
psql -h dbhost -d targetdb -f change_schema.sql -v schema=<schema_name>
dengan sed
perintah sederhana , misalnya - maka Anda hanya perlu menjalankan perintah ini. Tentu saja, Anda bisa mengubahnya menjadi skrip shell yang tepat jika Anda mau.
Postgres
bukannyaPostgreSQL
tidak apa-apa.