Saya memiliki pengaturan DB multi-tenant, dan perlu menambahkan beberapa kolom. Saya menggunakan skema (dan search_path) untuk mempartisi pengguna saya, jadi saya mencari cara di mana-mana untuk menerapkan perubahan skema-DDL ke semua database saya. Awalnya, saya pikir saya mungkin bisa melakukannya sebagai permintaan tunggal (kursor pada pg_catalog), tetapi berpikir doa baris perintah psql -f
mungkin cara yang disukai.
postgresql
postgresql-9.2
Chris
sumber
sumber
Postgres
bukannyaPostgreSQL
tidak apa-apa.Jawaban:
Saya lebih suka solusi yang terakhir. Anda dapat mengumpulkan nama skema ke file (satu skema per baris) di
psql
:Maka Anda dapat dengan mudah melakukan hal berikut:
Miliki skrip pengubah DDL (misalnya,
change_schema.sql
), tanpa referensi ke skema yang disertakanKemudian Anda dapat mengubah setiap baris daftar skema menjadi garis seperti
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.sumber
EXECUTE
untuk menjalankan pernyataan sebagai SQL dinamis.Hanya untuk kelengkapan, pendekatan lain adalah untuk mengulang semua skema dan menjalankan perubahan dengan SQL dinamis dalam PL / PgSQL, misalnya:
sumber