Ik gebruik postgresql en ik moet alle tabellen die in het schema aanwezig zijn verwijderen. Hoe kan ik verwijderen vanaf de opdrachtprompt.
Antwoord
U wilt de CASCADE
optie van DROP SCHEMA
. Van de documentatie :
CASCADE
– Verwijder automatisch objecten (tabellen, functies, etc.) die zijn opgenomen in het schema, en op hun beurt alle objecten die afhankelijk zijn van die objecten
VOORZICHTIG – nadruk boven de mijne.
Het is duidelijk dat u het schema daarna opnieuw moet maken.
Om alle tabellen in het huidige schema te verwijderen, kunt u dit script gebruiken:
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 $$;
Wijzigen WHERE schemaname = current_schema()
als u alle tabellen in een ander schema wilt verwijderen.
Opmerkingen
Antwoord
yourdb=# DROP SCHEMA *schema_name* CASCADE;
(werkt, zojuist getest met Postgresql 9.6.3, werkt mogelijk niet met eerdere releases)
Antwoord
@Techno Savvy
Zet tabellen neer met behulp van de postgres-syntaxis:
select "-- drop table " || tablename || " cascade;" from pg_tables where tablename not like "pg%" and tablename not like "sql%";
Kopieer de resulterende tekst naar een SQL-script of psql-terminal. Merk op dat de commandos becommentarieerd zijn.
Opmerkingen
- De vraag ging over het laten vallen van tabellen in een specifiek schema, denk ik.
Antwoord
Als je gewoon een heel eenvoudige manier wilt om dit te doen .. Dit is een script dat ik in het verleden heb gebruikt
select "drop table "||table_name||" cascade constraints;" from user_tables;
Dit zal een reeks drop-commandos afdrukken voor alle tabellen in het schema. Spool het resultaat van deze query en voer het uit.
Evenzo, als u meer dan tabellen wilt wissen, kunt u het volgende naar wens bewerken
select "drop "||object_type||" "|| object_name || ";" from user_objects where object_type in ("VIEW","PACKAGE","SEQUENCE", "PROCEDURE", "FUNCTION", "INDEX")
Bron: https://forums.oracle.com/forums/thread.jspa?threadID=614090
Reacties
- De vraag is Postgres, niet Oracle.
LINE 2
? Welke ' s op regel 1?