December 4, 2015

Ubah Owner Tabel PostgreSQL Secara Keseluruhan (Bulk Owner)

mengganti owner semua tabel database postgresql
Tulisan ini dibuat ketika penulis mengalami kesulitan saat akan melakukan perubahan untuk kepemilikan (owner) semua tabel database postgreSQL secara keseluruhan dalam satu skema database, karena tabelnya cukup banyak selain capek juga terlihat tidak simpel kalau harus diganti satu persatu.

Seperti kita ketahui, sebetulnya untuk merubah owner (kepemilikan) tabel pada database postgreSQL secara manual (satu-persatu) dapat dilakukan dengan perintah Alter Table, untuk merubah skema Alter Schema, contoh pengunaan:

ALTER TABLE <nama-schema>.<nama-tabel> OWNER TO <owner-baru);

Nah untuk itulah dimulai pencarian bagaimana cara merubah owner tabel database postgreSQL secara keseluruhan menggunakan search engine kesayangan yaitu Google, hehehehe ...

Akhirnya menemukan sebuah halaman website bernama stackoverflow dan salah satu membernya (alex soto) menyatakan bahwa sejak postgreSQL versi 8.2 perintah yang digunakan menjadi lebih mudah (tidak satu persatu) dan dilakukan melalui user postgres, dikatakannya juga jika merubah tabel owner, kita juga berbicara tentang perubahan sequences dan views, perintahnya adalah:

Tabel:
for tbl in `psql -qAt -c "select tablename from pg_tables where schemaname = 'public';" YOUR_DB` ; do  psql -c "alter table \"$tbl\" owner to NEW_OWNER" YOUR_DB ; done

Sequences:
for tbl in `psql -qAt -c "select sequence_name from information_schema.sequences where sequence_schema = 'public';" YOUR_DB` ; do  psql -c "alter table \"$tbl\" owner to NEW_OWNER" YOUR_DB ; done

Views
for tbl in `psql -qAt -c "select table_name from information_schema.views where table_schema = 'public';" YOUR_DB` ; do  psql -c "alter table \"$tbl\" owner to NEW_OWNER" YOUR_DB ; done


Perhatikan: YOUR_DB = nama database sobat, NEW_OWNER = user database yang ingin diberikan status kepemilikan yang baru, selain itu jika sobat menggunakan skema lebih dari satu, jalankan perintah diatas untuk tiap-tiap skema, karena perintah diatas adalah perintah dasar untuk mengganti owner tabel, sequences, dan views pada skema public (schemaname = 'public').

Penulis sendiri menjalankan perintah tersebut pada postgreSQl versi 8.1, diskusi lengkap tentang sintaks diatas dapat sobat baca pada referensi link berikut: http://stackoverflow.com/questions/1348126/modify-owner-on-all-tables-simultaneously-in-postgresql/2686185#2686185

Dalam perkembangannya, diskusi pada halaman referensi diatas juga digunakan sebagai acuan bagi yang lain untuk membuat skrip sederhana untuk mengganti owner semua tabel dalam database postgreSQL, mereka adalah:

gingerlime dengan linknya : https://gist.github.com/gingerlime/2482969

jirutka github link: https://gist.github.com/jirutka/afa3ce62b1430abf7572#file-pg_change_db_owner-sh

Demikianlah, sobat bisa menggunakan perintah yang ada pada artikel ini, atau salah satu dari tiga link referensi diatas, mudah-mudahan dapat bermanfaat.

Terima kasih atas kunjungannya.

No comments:

Post a Comment