Käytän postgresql: tä ja minun täytyy pudottaa kaikki taulukossa olevat taulukot. Kuinka voin poistaa komentokehotteesta.
Vastaa
Haluat käyttää CASCADE
-vaihtoehto DROP SCHEMA
. dokumentaatiosta :
CASCADE
– Pudota automaattisesti kaavaan sisältyvät objektit (taulukot, toiminnot jne.), ja puolestaan kaikki objektista riippuvat objektit
Ole varovainen – korostus minun yläpuolellani.
On selvää, että sinun on luotava kaava uudelleen jälkikäteen.
Jos haluat vain pudottaa kaikki taulukot nykyiseen skeemaan, voit käyttää tätä komentosarjaa:
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 $$;
Muuta WHERE schemaname = current_schema()
jos haluat pudottaa kaikki taulukot eri skeemaan.
Kommentit
vastaus
yourdb=# DROP SCHEMA *schema_name* CASCADE;
(toimii, vain testattu Postgresql 9.6.3: lla, ei välttämättä toimi aiempien julkaisujen kanssa)
Vastaa
@Techno Savvy
Pudota taulukot postgres-syntaksilla:
select "-- drop table " || tablename || " cascade;" from pg_tables where tablename not like "pg%" and tablename not like "sql%";
Kopioi tuloksena oleva teksti SQL-komentosarjaan tai psql-pääte. Huomaa, että komennot on kommentoitu.
Kommentit
- Luulen, että kysymys oli taulukoiden pudottamisesta tietyssä skeemassa.
Vastaa
Jos haluat vain todella yksinkertaisen tavan tehdä tämä. Tässä on aiemmin käyttämäni komentosarja
select "drop table "||table_name||" cascade constraints;" from user_tables;
Tämä tulostaa sarjan pudotuskomentoja kaikille skeeman taulukoille. Tausta tämän kyselyn tulos ja suorita se.
Vastaavasti, jos haluat tyhjentää useamman kuin taulukon, voit muokata seuraavaa tarpeidesi mukaan
select "drop "||object_type||" "|| object_name || ";" from user_objects where object_type in ("VIEW","PACKAGE","SEQUENCE", "PROCEDURE", "FUNCTION", "INDEX")
Lähde: https://forums.oracle.com/forums/thread.jspa?threadID=614090
kommentit
- Kysymys on Postgres, ei Oracle.
LINE 2
? Mitä ' s rivillä 1?