Мне всегда было удобнее создавать sql-скрипт, который я мог бы просмотреть и протестировать перед запуском, чем полагаться на правильное получение plpgsql, чтобы он не разрушил мою базу данных. Что-то простое в bash, которое выбирает имена таблиц из каталога, а затем создает для меня операторы drop. Итак, для 8.4.x вы получите этот базовый запрос:
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);
К которому вы можете добавить предложение where. ( where c.relname ilike 'bubba%')
Результат выглядит так:
Name
drop table public.a1;
drop table public.a2;
Итак, сохраните это в файле .sql и запустите его с помощью psql -f filename.sql