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