Jeg bruger postgresql, og jeg skal slippe alle de tabeller, der findes i skemaet. Hvordan kan jeg slette fra kommandoprompten.
Svar
Du vil bruge CASCADE
mulighed for DROP SCHEMA
. Fra dokumentationen :
CASCADE
– Slip automatisk objekter (tabeller, funktioner osv.), Der er indeholdt i skemaet, og til gengæld alle objekter, der er afhængige af disse objekter
VÆR FORSIGTIG – fremhævelse over min.
Det er klart, at du bliver nødt til at genskabe skemaet bagefter.
For bare at slippe alle tabeller i det aktuelle skema kan du bruge dette 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 $$;
Skift WHERE schemaname = current_schema()
hvis du vil slippe alle tabellerne i et andet skema.
Kommentarer
Svar
yourdb=# DROP SCHEMA *schema_name* CASCADE;
(fungerer, netop testet med Postgresql 9.6.3, fungerer muligvis ikke med tidligere udgivelser)
Svar
@Techno Savvy
Drop tabeller ved hjælp af postgres-syntaks:
select "-- drop table " || tablename || " cascade;" from pg_tables where tablename not like "pg%" and tablename not like "sql%";
Kopier den resulterende tekst til et SQL-script eller psql terminal. Bemærk, at kommandoerne er kommenteret.
Kommentarer
- Spørgsmålet var, tror jeg, at droppe tabeller i et bestemt skema.
Svar
Hvis du bare vil have en rigtig enkel måde at gøre dette på .. Her er et script, jeg tidligere har brugt
select "drop table "||table_name||" cascade constraints;" from user_tables;
Dette udskriver en række drop-kommandoer for alle tabeller i skemaet. Spol resultatet af denne forespørgsel og udfør det.
Ligeledes hvis du vil rydde mere end tabeller, kan du redigere følgende, så det passer til dine behov
select "drop "||object_type||" "|| object_name || ";" from user_objects where object_type in ("VIEW","PACKAGE","SEQUENCE", "PROCEDURE", "FUNCTION", "INDEX")
Kilde: https://forums.oracle.com/forums/thread.jspa?threadID=614090
Kommentarer
- Spørgsmålet er Postgres, ikke Oracle.
LINE 2
? Hvad ' s på linje 1?