postgres cum să scap toate tabelele într-o schemă prin comanda

Folosesc postgresql și trebuie să renunț la toate tabelele care sunt prezente în schemă. Cum pot șterge din promptul de comandă.

Răspuns

Doriți să utilizați CASCADE opțiunea DROP SCHEMA. Din documentația :

CASCADE – Aruncați automat obiecte (tabele, funcții etc.) care sunt conținute în schemă, și, la rândul său, toate obiectele care depind de acele obiecte

ATENȚIE – accent mai presus de al meu.

Evident, va trebui să recreați schema după aceea.

Pentru a plasa toate tabelele în schema curentă, puteți utiliza acest 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 $$; 

Schimbați WHERE schemaname = current_schema() dacă doriți să plasați toate tabelele într-o schemă diferită.

Comentarii

  • când folosesc DROP SCHEMA schemaname CASCADE; primesc eroare EROARE: eroare de sintaxă la sau lângă " DROP " LINE 2: Schema DROP
  • LINE 2? Ce ' este pe linia 1?
  • De fapt, am nevoie pentru a renunța la toate ta bles și obiectul său dependent. dar nu ar trebui să șteargă procedura și toate …
  • dar când folosesc comanda drop schema șterge și schema. în cazul meu ar trebui să existe schema
  • @asalthangam răspuns actualizat

Răspuns

yourdb=# DROP SCHEMA *schema_name* CASCADE; 

(funcționează, doar testat cu Postgresql 9.6.3, s-ar putea să nu funcționeze cu versiunile anterioare)

Răspuns

@Techno Savvy

Drop tabele utilizând sintaxa postgres:

select "-- drop table " || tablename || " cascade;" from pg_tables where tablename not like "pg%" and tablename not like "sql%"; 

Copiați textul rezultat într-un script sql sau terminal psql. Rețineți că comenzile sunt comentate.

Comentarii

  • Întrebarea a fost despre eliminarea tabelelor într-o anumită schemă, cred.

Răspuns

Dacă doriți doar un mod foarte simplu de a face acest lucru .. Iată un script pe care l-am folosit în trecut

select "drop table "||table_name||" cascade constraints;" from user_tables; 

Aceasta va imprima o serie de comenzi drop pentru toate tabelele din schemă. Spulează rezultatul acestei interogări și execută-l.

La fel, dacă vrei să ștergi mai mult decât tabele, poți edita următoarele pentru a se potrivi nevoilor tale

select "drop "||object_type||" "|| object_name || ";" from user_objects where object_type in ("VIEW","PACKAGE","SEQUENCE", "PROCEDURE", "FUNCTION", "INDEX") 

Sursă: https://forums.oracle.com/forums/thread.jspa?threadID=614090

Comentarii

  • Întrebarea este Postgres, nu Oracle.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *