postgres, jak usunąć całą tabelę ze schematu za pomocą polecenia

Używam postgresql i muszę usunąć wszystkie tabele, które są obecne w schemacie. Jak mogę usunąć z wiersza poleceń.

Odpowiedź

Chcesz użyć CASCADE opcja DROP SCHEMA. Z dokumentacji :

CASCADE – Automatycznie usuwaj obiekty (tabele, funkcje itp.) Zawarte w schemacie, i kolejno wszystkie obiekty zależne od tych obiektów

OSTROŻNIE – nacisk powyżej mój.

Oczywiście później trzeba będzie odtworzyć schemat.

Aby po prostu usunąć wszystkie tabele z bieżącego schematu, możesz użyć tego skryptu:

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

Zmień WHERE schemaname = current_schema() jeśli chcesz usunąć wszystkie tabele z innego schematu.

Komentarze

  • kiedy używam DROP SCHEMA schemaname CASCADE; otrzymuję błąd BŁĄD: błąd składni na poziomie lub w pobliżu " DROP " LINE 2: DROP Schema
  • LINE 2? Co ' jest w linii 1?
  • właściwie muszę porzucić wszystkie ta bles i jego zależny obiekt. ale nie powinno usuwać procedury i wszystkiego ..
  • ale kiedy używam polecenia drop schema, usuwa ono również schemat. w moim przypadku schemat powinien istnieć
  • @asalthangam odpowiedź zaktualizowana

Odpowiedź

yourdb=# DROP SCHEMA *schema_name* CASCADE; 

(działa, właśnie przetestowano z Postgresql 9.6.3, może nie działać z poprzednimi wersjami)

Odpowiedź

@Techno Savvy

Usuń tabele używając składni postgres:

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

Skopiuj wynikowy tekst do skryptu sql lub terminal psql. Zauważ, że polecenia są zakomentowane.

Komentarze

  • Chyba chodziło o usuwanie tabel w określonym schemacie.

Odpowiedź

Jeśli potrzebujesz naprawdę prostego sposobu na zrobienie tego .. Oto skrypt, którego używałem w przeszłości

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

Spowoduje to wydrukowanie serii poleceń drop dla wszystkich tabel w schemacie. Buforuj wynik tego zapytania i wykonaj go.

Podobnie, jeśli chcesz wyczyścić więcej niż tabele, możesz edytować następujące elementy, aby dostosować je do swoich potrzeb.

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

Źródło: https://forums.oracle.com/forums/thread.jspa?threadID=614090

Komentarze

  • Pytanie brzmi Postgres, a nie Oracle.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *