У меня есть база данных со старой сломанной версией PostGIS, установленной в ней. Я хотел бы легко отбросить все функции в базе данных (все они из PostGIS). Есть ли простой способ сделать это? Даже простое извлечение списка имен функций было бы приемлемым, поскольку я мог просто сделать большой оператор DROP FUNCTION
.
Отбросить все функции из базы данных Postgres
Ответ 1
A отличный ответ на этот вопрос можно найти здесь:
SELECT 'DROP FUNCTION ' || ns.nspname || '.' || proname
|| '(' || oidvectortypes(proargtypes) || ');'
FROM pg_proc INNER JOIN pg_namespace ns ON (pg_proc.pronamespace = ns.oid)
WHERE ns.nspname = 'my_messed_up_schema' order by proname;
Ответ 2
Так же, как было postgis.sql
enabler install script, есть также uninstall_postgis.sql
uninstall script.
psql -d [yourdatabase] -f /path/to/uninstall_postgis.sql
Предупреждение: будьте готовы видеть, что ваши геометрия/географические столбцы и данные исчезают!