Io uso postgresql e devo eliminare tutte le tabelle presenti nello schema. Come posso eliminare dal prompt dei comandi.
Risposta
Vuoi utilizzare CASCADE
opzione di DROP SCHEMA
. Dalla documentazione :
CASCADE
– Rilascia automaticamente gli oggetti (tabelle, funzioni e così via) contenuti nello schema, e a sua volta tutti gli oggetti che dipendono da tali oggetti
ATTENZIONE – enfasi sopra la mia.
Ovviamente dovrai ricreare lo schema in seguito.
Per eliminare tutte le tabelle nello schema corrente, puoi utilizzare questo 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 $$;
Modifica WHERE schemaname = current_schema()
se si desidera eliminare tutte le tabelle in uno schema diverso.
Commenti
Answer
yourdb=# DROP SCHEMA *schema_name* CASCADE;
(funziona, appena testato con Postgresql 9.6.3, potrebbe non funzionare con le versioni precedenti)
Risposta
@Techno Savvy
Elimina tabelle utilizzando la sintassi postgres:
select "-- drop table " || tablename || " cascade;" from pg_tables where tablename not like "pg%" and tablename not like "sql%";
Copia il testo risultante in uno script sql o terminale psql. Nota che i comandi sono commentati.
Commenti
- La domanda riguardava il rilascio di tabelle in uno schema specifico, credo.
Risposta
Se vuoi solo un modo molto semplice per farlo .. Ecco uno script che ho usato in passato
select "drop table "||table_name||" cascade constraints;" from user_tables;
Questo stamperà una serie di comandi di rilascio per tutte le tabelle nello schema. Spool il risultato di questa query ed eseguila.
Allo stesso modo, se desideri cancellare più di tabelle, puoi modificare quanto segue in base alle tue esigenze
select "drop "||object_type||" "|| object_name || ";" from user_objects where object_type in ("VIEW","PACKAGE","SEQUENCE", "PROCEDURE", "FUNCTION", "INDEX")
Fonte: https://forums.oracle.com/forums/thread.jspa?threadID=614090
Commenti
- La domanda è Postgres, non Oracle.
LINE 2
? Cosa ' cè sulla riga 1?