A postgres hogyan dobhatja le az összes táblázatot egy sémában a

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

  • amikor a DROP SCHEMA schemaname CASCADE-t használom; hiba ERROR: szintaktikai hiba a " DROP " 2. sorban: DROP séma
  • LINE 2? Milyen ' s az 1. vonalon?
  • valójában le kell dobnom az összes ta bles és függő objektuma. de nem szabad törölnie az eljárást és az összeset.
  • de amikor a drop schema parancsot használom, törölje a sémát is. az én esetemben a sémának léteznie kell
  • @asalthangam válasz frissítve

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.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük