Publié le: 2016-09-10

Cleanup scheme

Dans certains cas, comme par exemple dans un environnement d’intégration, il peut être intéressant de nettoyer toutes entrées dans votre BDD PostgreSQL. Lorsque le nombre de tables devient grand et surtout lorsque vous avez construit un schéma robuste à base de clefs étrangères, il peut être fastidieux de nettoyer ce schéma. Heureusement, il est possible de nettoyer votre base en demandant à PostgreSQL de générer la requête qui va lister les tables du schéma et les nettoyer. La requête ci-dessous va générer la requête de nettoyage des tables dans la base courante du schéma public. Elle ne s’éxecutera pas, il s’agit uniquement d’un résultat SQL sous forme de chaîne.

select 'truncate ' || string_agg(nspname || '.' || relname, ',') || ';' from pg_class join pg_namespace on pg_class.relnamespace = pg_namespace.oid where pg_namespace.nspname = 'public' and relkind='r';

Il ne vous reste plus qu’à exécuter la requête générée. Note: Si vous souhaitez filtrer sur le nom des tables il vous suffit de filtrer sur le champ relname.