Jag använder postgresql och jag måste släppa alla tabeller som finns i schemat. Hur kan jag radera från kommandotolken.
Svar
Du vill använda CASCADE
alternativ för DROP SCHEMA
. Från dokumentationen :
CASCADE
– Släpp automatiskt objekt (tabeller, funktioner osv.) Som finns i schemat, och i sin tur alla objekt som är beroende av dessa objekt
VAR FÖRSIKTIG – betoning ovanför mitt.
Uppenbarligen måste du återskapa schemat efteråt.
För att bara släppa alla tabeller i det aktuella schemat kan du använda det här skriptet:
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 $$;
Ändra WHERE schemaname = current_schema()
om du vill släppa alla tabeller i ett annat schema.
Kommentarer
Svar
yourdb=# DROP SCHEMA *schema_name* CASCADE;
(fungerar, bara testat med Postgresql 9.6.3, kanske inte fungerar med tidigare versioner)
Svar
@Techno Savvy
Släpp tabeller med postgres-syntax:
select "-- drop table " || tablename || " cascade;" from pg_tables where tablename not like "pg%" and tablename not like "sql%";
Kopiera den resulterande texten till ett SQL-skript eller psql-terminal. Observera att kommandona kommenteras.
Kommentarer
- Frågan handlade om att släppa tabeller i ett visst schema, tror jag.
Svar
Om du bara vill ha ett riktigt enkelt sätt att göra det här. Här är ett skript som jag har använt tidigare
select "drop table "||table_name||" cascade constraints;" from user_tables;
Detta skriver ut en serie släppkommandon för alla tabeller i schemat. Spola resultatet av denna fråga och kör den.
På samma sätt om du vill rensa mer än tabeller kan du redigera följande för att passa dina behov
select "drop "||object_type||" "|| object_name || ";" from user_objects where object_type in ("VIEW","PACKAGE","SEQUENCE", "PROCEDURE", "FUNCTION", "INDEX")
Källa: https://forums.oracle.com/forums/thread.jspa?threadID=614090
Kommentarer
- Frågan är Postgres, inte Oracle.
LINE 2
? Vad ' s på rad 1?