postgres hvordan du slipper hele tabellen i et skjema gjennom kommando

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

  • når jeg bruker DROP SCHEMA-skjemanavn CASCADE; får feil FEIL: syntaksfeil ved eller i nærheten av " DROP " LINJE 2: DROP-skjema
  • LINE 2? Hva ' er på linje 1?
  • faktisk trenger jeg å slippe alle ta bles og dets avhengige objekt. men det skal ikke slette prosedyren og alt ..
  • men når jeg bruker kommandoen drop schema, sletter den også skjemaet. i mitt tilfelle skal skjema eksistere
  • @asalthangam svar oppdatert

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.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *