Zawsze czułem się bardziej komfortowo, tworząc skrypt sql, który mogę przejrzeć i przetestować przed jego uruchomieniem, niż polegać na poprawnym ustawieniu pliku plpgsql, aby nie zniszczył mojej bazy danych. Coś prostego w bashu, które wybiera nazwy tabel z katalogu, a następnie tworzy dla mnie instrukcje drop. Więc dla 8.4.x otrzymasz takie podstawowe zapytanie:
SELECT 'drop table '||n.nspname ||'.'|| c.relname||';' as "Name"
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','v','S','')
AND n.nspname <> 'pg_catalog'
AND n.nspname <> 'information_schema'
AND n.nspname !~ '^pg_toast'
AND pg_catalog.pg_table_is_visible(c.oid);
Do którego możesz dodać klauzulę Where. ( where c.relname ilike 'bubba%'
)
Wynik wygląda następująco:
Name
drop table public.a1;
drop table public.a2;
Więc zapisz to w pliku .sql i uruchom go za pomocą psql -f nazwa_pliku.sql