paranccsal. A postgresql-t használom, és el kell dobnom az összes táblázatot, amely a sémában található. Hogyan lehet törölni a parancssorból.
Válasz
A CASCADE
opció a DROP SCHEMA
lehetőségre. A dokumentációból :
CASCADE
– A sémában található objektumok (táblák, függvények stb.), , és minden objektum, amely ettől az objektumtól függ, automatikusan eldob
VIGYÁZZ – kiemelés az enyém felett.
Nyilvánvaló, hogy utána újra létre kell hoznod a sémát.
Az aktuális séma összes táblázatának eldobásához használhatja ezt a szkriptet:
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 $$;
WHERE schemaname = current_schema()
, ha az összes táblázatot el akarja dobni egy másik sémában.
Megjegyzések
Válasz
yourdb=# DROP SCHEMA *schema_name* CASCADE;
(működik, csak a Postgresql 9.6.3 verzióval tesztelve, lehet, hogy nem fog működni a korábbi kiadásokkal)
Válasz
@Techno Savvy
Táblázatok eldobása a postgres szintaxissal:
select "-- drop table " || tablename || " cascade;" from pg_tables where tablename not like "pg%" and tablename not like "sql%";
Másolja a kapott szöveget egy SQL parancsfájlba vagy psql terminál. Ne feledje, hogy a parancsok ki vannak kommentálva.
Megjegyzések
- Szerintem a kérdés egy táblázatok eldobásáról szól egy adott sémában.
Válasz
Ha csak nagyon egyszerű módot akarsz erre .. Van egy szkript, amelyet a múltban használtam
select "drop table "||table_name||" cascade constraints;" from user_tables;
Ez egy sor drop parancsot nyomtat ki a séma összes táblájához. Sorolja fel a lekérdezés eredményét, és hajtsa végre.
Hasonlóképpen, ha több mint táblázatot szeretne törölni, az alábbiakat szerkesztheti az Ön igényeinek megfelelően. >
Forrás: https://forums.oracle.com/forums/thread.jspa?threadID=614090
Megjegyzések
- A kérdés a Postgres, nem pedig az Oracle.
LINE 2
? Milyen ' s az 1. vonalon?