Jeg bruker postgresql og jeg må slippe alle tabellene som er tilstede i skjemaet. Hvordan kan jeg slette fra ledeteksten.
Svar
Du vil bruke CASCADE
alternativ for DROP SCHEMA
. Fra dokumentasjonen :
CASCADE
– Slipp automatisk objekter (tabeller, funksjoner osv.) Som finnes i skjemaet, og i sin tur alle objekter som er avhengige av disse objektene
VÆR FORSIKTIG – vektlegging over min.
Selvfølgelig må du gjenskape skjemaet etterpå.
For å bare slippe alle tabellene i gjeldende skjema, kan du bruke dette 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 $$;
Endre WHERE schemaname = current_schema()
hvis du vil slippe alle tabellene i et annet skjema.
Kommentarer
Svar
yourdb=# DROP SCHEMA *schema_name* CASCADE;
(fungerer, nettopp testet med Postgresql 9.6.3, fungerer kanskje ikke med tidligere utgivelser)
Svar
@Techno Savvy
Slipp tabeller ved hjelp av postgres-syntaks:
select "-- drop table " || tablename || " cascade;" from pg_tables where tablename not like "pg%" and tablename not like "sql%";
Kopier den resulterende teksten til et SQL-skript eller psql terminal. Merk at kommandoene er kommentert.
Kommentarer
- Spørsmålet handlet om å slippe tabeller i et bestemt skjema, tror jeg.
Svar
Hvis du bare vil ha en veldig enkel måte å gjøre dette på. Her er et skript jeg har brukt tidligere
select "drop table "||table_name||" cascade constraints;" from user_tables;
Dette vil skrive ut en serie slippkommandoer for alle tabeller i skjemaet. Spol resultatet av denne spørringen og utfør den.
På samme måte hvis du vil fjerne mer enn tabeller, kan du redigere følgende for å dekke 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ørsmålet er Postgres, ikke Oracle.
LINE 2
? Hva ' er på linje 1?