Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wymazanie bazy.
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
Blackhole
Jak szybko (jedną instrukcją) można wykasować wszystkie własne tabele z bazy nie kasując samej bazy?
Jabol
najpierw znajdź sobie oid interesującego Cię schematu poprzez takie zapytanie.
  1. SELECT *,oid
  2. FROM pg_catalog.pg_namespace;
Potem wystarczy już tylko usunąć:
  1. DELETE
  2. FROM pg_class WHERE relnamespace={id} AND relkind = 'r'::"char";
A jeżeli chcesz usunąc wszystkie tabele to z całej bazy danych to lepiej usuń bazę danych i stwórz ją od nowa bo jak usuniesz również tabele systemowe ze schematu pg_catalog to nie będziesz już miał czego szukać.
Aha, i jak już będziesz tak usuwał to radzę też usunąć wszystkie indexy i takie tam, które się z tabelami łączą. Nie wiem czy dodanie CASCADE coś da, bo tą metodę dopiero co eksperymentalnie wymyśliłem. Dlatego hint -> indexy to po prostu dajesz 'i' zamiast 'r' przy relkind (ale takie drobnostki jestem pewien już sobie sam rozpracujesz - wystarczy się przyjrzeć tabeli pg_class oraz widokowi pg_tables)..

AAAAAAAAAAA: NIE RÓBCIE TEGO. WŁASNIE ZAUWAŻYŁEM, ŻE NIE DZIAŁA ://// (jeżeli chcecie się przekonać jak to spórbujcie po zrobieniu tego załadować tabelę, która już istniała :/).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.