postgres comment supprimer toute la table dun schéma via la commande

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

  • lorsque jutilise DROP SCHEMA schemaname CASCADE; je reçois erreur ERROR: erreur de syntaxe à ou près de " DROP " LINE 2: DROP Schema
  • LINE 2? Quels sont les ' sur la ligne 1?
  • en fait, jai besoin de supprimer tous les ta bles et son objet dépendant. mais il ne doit pas supprimer la procédure et tout ..
  • mais quand jutilise la commande drop schema, il supprime également le schéma. dans mon cas, le schéma devrait exister
  • @asalthangam réponse mise à jour

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *