Jutilise postgresql et je dois supprimer toutes les tables présentes dans le schéma. Comment puis-je supprimer de linvite de commande.
Réponse
Vous souhaitez utiliser CASCADE
option de DROP SCHEMA
. De la documentation :
CASCADE
– Déposer 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 – laccent est mis au-dessus du mien.
Vous devrez évidemment 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 $$;
Change WHERE schemaname = current_schema()
si vous souhaitez supprimer toutes les tables dans un schéma différent.
Commentaires
Réponse
yourdb=# DROP SCHEMA *schema_name* CASCADE;
(fonctionne, vient dêtre testé avec Postgresql 9.6.3, peut ne pas fonctionner avec les versions précédentes)
Réponse
@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 terminal psql. Notez que les commandes sont commentées.
Commentaires
- La question portait sur la suppression de tables dans un schéma spécifique, je pense.
Réponse
Si vous voulez juste un moyen très simple de le faire .. Voici un script que jai utilisé dans le passé
select "drop table "||table_name||" cascade constraints;" from user_tables;
Ceci affichera une série de commandes de suppression pour toutes les tables du schéma. Spoolez le résultat de cette requête et exécutez-le.
De même, si vous voulez effacer plus de tables, vous pouvez modifier ce qui suit 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
Commentaires
- La question est Postgres, pas Oracle.
LINE 2
? Quels sont les ' sur la ligne 1?