postgres hvordan man taber hele tabellen i et skema gennem kommando

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

  • når jeg bruger DROP SCHEMA-skemanavn CASCADE; får fejl FEJL: syntaksfejl ved eller i nærheden af " DROP " LINJE 2: DROP-skema
  • LINE 2? Hvad ' s på linje 1?
  • skal jeg faktisk slippe alle ta bles og dets afhængige genstand. men det skal ikke slette procedure og alt ..
  • men når jeg bruger kommandoen drop schema, slettes det også skemaet. i mit tilfælde skal der findes skema
  • @asalthangam svar opdateret

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.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *