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.
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.
Réponses:
Vous souhaitez utiliser l' CASCADE
option de DROP SCHEMA
. De la documentation :
CASCADE
- Supprimez automatiquement les objets (tables, fonctions, etc.) contenus dans le schéma, et à leur 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.
LINE 2
? Qu'y a-t-il sur la ligne 1?
@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.
Si vous voulez juste un moyen très simple de le faire .. Voici un script que j'ai utilisé dans le passé
select 'drop table '||table_name||' cascade constraints;' from user_tables;
Cela imprimera une série de commandes de dépôt pour toutes les tables du schéma. Spoulez le résultat de cette requête et exécutez-le.
De même, si vous souhaitez effacer plus de tableaux, vous pouvez modifier les éléments suivants en fonction de vos besoins
select 'drop '||object_type||' '|| object_name || ';' from user_objects where object_type in ('VIEW','PACKAGE','SEQUENCE', 'PROCEDURE', 'FUNCTION', 'INDEX')
Source: https://forums.oracle.com/forums/thread.jspa?threadID=614090