postgres hur man släpper hela tabellen i ett schema genom kommando

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

  • när jag använder DROP SCHEMA schemaname CASCADE; får felFEL: syntaxfel vid eller nära " DROP " RAD 2: DROP-schema
  • LINE 2? Vad ' s på rad 1?
  • egentligen behöver jag släppa alla ta bles och dess beroende objekt. men det bör inte ta bort proceduren och allt ..
  • men när jag använder kommandot drop schema raderar det också schemat. i mitt fall bör schemat finnas
  • @asalthangam svar uppdaterat

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.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *