Génération automatique d'une liste de requêtes sql pour toutes les tables de Postgresql


Il arrive assez régulièrement que l'on doive appliquer une modification à toute les tables d'une base de données postgresql. Par exemple s'il faut rajouter un droit de consultation pour un user particulier sur toutes les tables. On peut bien entendu se palucher à la main tous les :
GRANT SELECT ON TABLE altitude TO userdbreadonly;
pour autant de tables qu'il y a dans la base...
Mais comme un bon informaticien déteste toutes les tâches répétitives,  il préférera trouver comment
 écrire une requête dont le résultat correspondra à la liste des ordres sql qu'il veut exécuter, soit dans ce cas :
SELECT 'GRANT SELECT ON TABLE ' || tablename || ' TO cgdbreadonly;' FROM pg_tables WHERE schemaname like 'public'  ORDER BY 1;


qui lui retournera la liste de tous les GRANT SELECT pour toutes les tables
liste qu'il n'aura plus qu'à exécuter...

Commentaires

Posts les plus consultés de ce blog

Comment extraire les fichiers disques en raw d'un backup proxmox vma

Find the lists of disks of your Proxmox VM stored in a ceph cluster

Comment copier une machine virtuelle kvm en raw sur un Volume Group LVM2 se trouvant sur un disque en DRBD