web-dev-qa-db-fra.com

Supprimer toutes les tables sans supprimer la base de données dans postgres dans Django dbshell en une seule commande?

J'ai essayé ça ..

 select 'drop table if exists "' || tablename || '" cascade;' 
from pg_tables
 where schemaname = 'public';

mais ne semble pas fonctionner pour une seule commande?

19
Irshadmi4

Si toutes vos tables sont dans un seul schéma, cette approche pourrait fonctionner (le code ci-dessous suppose que le nom de votre schéma est "public")

drop schema public cascade;
create schema public;

Supprimer toutes les tables dans PostgreSQL?

voir le lien ci-dessus pour plus de réponses

57
Haji

Exécutez le script bash suivant:

psql -h <pg_Host> -p <pg_port> -U <pg_user> <pg_db> -t -c "select 'drop table \"' || tablename || '\" cascade;' from pg_tables where schemaname='public'" | psql -h <pg_Host> -p <pg_port> -U <pg_user> <pg_db>

J'ai copié à partir d'ici: http://www.commandlinefu.com/commands/view/12989/postgresql-drop-all-tables-from-a-schema

Ça a marché pour moi.

10
Chocksmith