Her zaman bir sql betiği oluştururken, onu çalıştırmadan önce plpgsql'yi doğru bir şekilde almaya güvenmek yerine inceleyip test edebileceğimi hissettim, böylece veritabanımı uçurmaz. Bash'da katalogdan tablo adlarını seçen ve ardından benim için drop ifadelerini oluşturan basit bir şey. Yani 8.4.x için şu temel sorguyu alırsınız:
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);
Bir where cümlesi ekleyebilirsiniz. ( where c.relname ilike 'bubba%')
Çıktı şuna benzer:
Name
drop table public.a1;
drop table public.a2;
Bunu bir .sql dosyasına kaydedin ve psql -f dosyaadı.sql ile çalıştırın.