Comment puis-je supprimer toutes les tables de postgresql, le travail à partir de la ligne de commande?
Je ne veux supprimer la base de données elle - même toutes les tables et toutes les données.
Merci.
Comment puis-je supprimer toutes les tables de postgresql, le travail à partir de la ligne de commande?
Je ne veux supprimer la base de données elle - même toutes les tables et toutes les données.
Merci.
Vous pouvez écrire une requête pour générer un script SQL comme ceci:
select 'drop table "' || tablename || '" cascade;' from pg_tables;
Ou:
select 'drop table if exists "' || tablename || '" cascade;' from pg_tables;
Dans le cas où certaines tables sont automatiquement supprimées en raison d'option cascade dans une phrase précédente.
En outre, comme indiqué dans les commentaires, vous pouvez filtrer les tables que vous souhaitez déposer par le nom du schéma:
select 'drop table if exists "' || tablename || '" cascade;'
from pg_tables
where schemaname = 'public'; -- or any other schema
Et puis l'exécuter.
Glorieux COPIER+COLLER.
La plus acceptée de réponse à ce jour (janvier 2014):
drop schema public cascade;
create schema public;
Cela ne fonctionne toutefois, si votre intention est de restaurer le schéma public de son état vierge cela ne suffit pas à accomplir la tâche. Sous pgAdmin III for PostgreSQL 9.3.1, si vous cliquez sur le "public" schéma créé de cette façon, et de regarder dans le "volet SQL" vous verrez ce qui suit:
-- Schema: public
-- DROP SCHEMA public;
CREATE SCHEMA public
AUTHORIZATION postgres;
Cependant, en revanche, une nouvelle base de données sont les suivantes:
-- Schema: public
-- DROP SCHEMA public;
CREATE SCHEMA public
AUTHORIZATION postgres;
GRANT ALL ON SCHEMA public TO postgres;
GRANT ALL ON SCHEMA public TO public;
COMMENT ON SCHEMA public
IS 'standard public schema';
Pour moi, en utilisant un framework web python qui crée des tables de base de données (web2py), à l'aide de l'ancien causé des problèmes:
<class 'psycopg2.ProgrammingError'> no schema has been selected to create in
Donc, à mon sens, totalement réponse correcte est:
DROP SCHEMA public CASCADE;
CREATE SCHEMA public;
GRANT ALL ON SCHEMA public TO postgres;
GRANT ALL ON SCHEMA public TO public;
COMMENT ON SCHEMA public IS 'standard public schema';
(voir aussi la note à ces commandes à partir de pgAdmin III, je suis allé à l'Plugins-> PSQL Console)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.