J'utilise postgresql et j'ai besoin de supprimer toutes les tables présentes dans le schéma. Comment puis-je supprimer de l'invite de commande.
Vous souhaitez utiliser l'option CASCADE
de DROP SCHEMA
. De la documentation :
CASCADE
- Supprime automatiquement les objets (tables, fonctions, etc.) contenus dans le schéma, et à son tour tous les objets qui dépendent de ces objets
SOYEZ PRUDENT - l'accent est mis sur le mien.
De toute évidence, vous devrez recréer le schéma par la suite.
Pour simplement supprimer toutes les tables du schéma actuel, vous pouvez utiliser ce script:
DO $$ DECLARE
tabname RECORD;
BEGIN
FOR tabname IN (SELECT tablename
FROM pg_tables
WHERE schemaname = current_schema())
LOOP
EXECUTE 'DROP TABLE IF EXISTS ' || quote_ident(tabname.tablename) || ' CASCADE';
END LOOP;
END $$;
Modifiez WHERE schemaname = current_schema()
si vous souhaitez supprimer toutes les tables dans un schéma différent.
yourdb=# DROP SCHEMA *schema_name* CASCADE;
(fonctionne, juste testé avec Postgresql 9.6.3, peut ne pas fonctionner avec les versions précédentes)
@Techno Savvy
Supprimez les tables en utilisant la syntaxe postgres:
select '-- drop table ' || tablename || ' cascade;' from pg_tables
where tablename not like 'pg%' and tablename not like 'sql%';
Copiez le texte résultant dans un script sql ou un terminal psql. Notez que les commandes sont commentées.