Ich habe mich immer viel wohler gefühlt, wenn ich ein SQL-Skript erstellt habe, das ich überprüfen und testen kann, bevor ich es ausführe, als mich darauf zu verlassen, dass plpgsql genau richtig ist, damit meine Datenbank nicht zerstört wird. Etwas Einfaches in Bash, das die Tabellennamen aus dem Katalog auswählt und dann die Drop-Anweisungen für mich erstellt. Für 8.4.x erhalten Sie also diese grundlegende Abfrage:
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);
Dem können Sie eine where-Klausel hinzufügen. ( where c.relname ilike 'bubba%')
Die Ausgabe sieht folgendermaßen aus:
Name
drop table public.a1;
drop table public.a2;
Speichern Sie das also in einer .sql-Datei und führen Sie es mit psql -f filename.sql aus