Comment Drop toutes les contraintes sur une base de données Postgres?
1. Drop Constraints
Il y a quelques années, mon site web (o7planning.org) utilisait la base de données Oracle. Même si c'est une bonne base de données, elle était trop encombrante et la réinstallation prenait beaucoup de temps. J'ai donc réfléchi à la remplacer par une autre base de données, et Postgres a été choisi.
À l'époque, mon problème était de convertir les données d'Oracle vers Postgres. J'ai créé un outil simple permettant d'interroger chaque table dans Oracle et de l'insérer dans les tables Postgres. Les contraintes (constrants) dans Postgres doivent être supprimées (drop) aux fins de garantir une insertion réussie, elles seront recréées par la suite.
La requête suivante permet d'obtenir le scénario pour drop toutes les contraintes dans Postgres, copier le résultat et l'enregistrer dans un fichier quelconque, par exemple: drop_constraints.sql.
Generate Drop-Script
SELECT 'ALTER TABLE "'||nspname||'"."'||relname||'" DROP CONSTRAINT "'||conname||'";'
FROM pg_constraint
INNER JOIN pg_class ON conrelid=pg_class.oid
INNER JOIN pg_namespace ON pg_namespace.oid=pg_class.relnamespace
ORDER BY CASE WHEN contype='f' THEN 0 ELSE 1 END,contype,nspname,relname,conname
Ensuite, exécuter la requête suivante afin d'obtenir un scénario permettant de recréer toutes les contraintes. Copier le résultat et l'enregistrer dans un fichier quelconque, par exemple: recreate_constraints.sql.
Generate Recreate-Script
SELECT 'ALTER TABLE "'||nspname||'"."'||relname||'" ADD CONSTRAINT "'||conname||'" '||
pg_get_constraintdef(pg_constraint.oid)||';'
FROM pg_constraint
INNER JOIN pg_class ON conrelid=pg_class.oid
INNER JOIN pg_namespace ON pg_namespace.oid=pg_class.relnamespace
ORDER BY CASE WHEN contype='f' THEN 0 ELSE 1 END DESC,
contype DESC,nspname DESC,relname DESC,conname DESC;
Enfin, j'exécute le scénario drop dans pgAdmin, ou j'exécute le fichier drop_constrants.sql via Terminal.
sudo -u postgres psql
\o /path/to/drop_constraints.sql
Tutoriels de base de données PostgreSQL
- Installer la base de données PostgreSQL sur Windows
- Installer la base de données PostgreSQL sur Ubuntu
- Installer la base de données PostgreSQL sur Mac OS
- Installer pgAdmin 3, 4 sur Ubuntu
- Configurer PostgreSQL pour autoriser les connexions à distance
- Sauvegarder et restaurer la base de données PostGres avec pgAdmin 4
- Comment Drop toutes les contraintes sur une base de données Postgres?
Show More