postgres kuinka kaavion kaikki taulukot pudotetaan komennolla

Käytän postgresql: tä ja minun täytyy pudottaa kaikki taulukossa olevat taulukot. Kuinka voin poistaa komentokehotteesta.

Vastaa

Haluat käyttää CASCADE -vaihtoehto DROP SCHEMA. dokumentaatiosta :

CASCADE – Pudota automaattisesti kaavaan sisältyvät objektit (taulukot, toiminnot jne.), ja puolestaan kaikki objektista riippuvat objektit

Ole varovainen – korostus minun yläpuolellani.

On selvää, että sinun on luotava kaava uudelleen jälkikäteen.

Jos haluat vain pudottaa kaikki taulukot nykyiseen skeemaan, voit käyttää tätä komentosarjaa:

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 $$; 

Muuta WHERE schemaname = current_schema() jos haluat pudottaa kaikki taulukot eri skeemaan.

Kommentit

  • kun käytän DROP SCHEMA -mallinimeä CASCADE; saan virhevirhe: syntaksivirhe " DROP " RIVI 2: DROP-skeema
  • LINE 2? Mitä ' s rivillä 1?
  • minun täytyy itse asiassa pudottaa kaikki ta ja siitä riippuvainen kohde. mutta sen ei pitäisi poistaa menettelyä ja kaikkia.
  • mutta kun käytän drop schema -komentoa, se poistaa myös skeeman. minun tapauksessani skeeman pitäisi olla olemassa
  • @asalthangam vastaus päivitetty

vastaus

yourdb=# DROP SCHEMA *schema_name* CASCADE; 

(toimii, vain testattu Postgresql 9.6.3: lla, ei välttämättä toimi aiempien julkaisujen kanssa)

Vastaa

@Techno Savvy

Pudota taulukot postgres-syntaksilla:

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

Kopioi tuloksena oleva teksti SQL-komentosarjaan tai psql-pääte. Huomaa, että komennot on kommentoitu.

Kommentit

  • Luulen, että kysymys oli taulukoiden pudottamisesta tietyssä skeemassa.

Vastaa

Jos haluat vain todella yksinkertaisen tavan tehdä tämä. Tässä on aiemmin käyttämäni komentosarja

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

Tämä tulostaa sarjan pudotuskomentoja kaikille skeeman taulukoille. Tausta tämän kyselyn tulos ja suorita se.

Vastaavasti, jos haluat tyhjentää useamman kuin taulukon, voit muokata seuraavaa tarpeidesi mukaan

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

Lähde: https://forums.oracle.com/forums/thread.jspa?threadID=614090

kommentit

  • Kysymys on Postgres, ei Oracle.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *