Удалить все функции из базы данных Postgres

У меня есть база данных со старой сломанной версией PostGIS. Я хотел бы легко удалить все функции из базы данных (все они из PostGIS). Есть ли простой способ сделать это? Даже простое извлечение списка имен функций было бы приемлемым, так как я мог просто сделать большойDROP FUNCTION заявление.

Ответы на вопрос(2)

postgis.sql enabler install scriptесть такжеuninstall_postgis.sql Удалить скрипт.

psql -d [yourdatabase] -f /path/to/uninstall_postgis.sql

Предупреждение: будьте готовы к тому, что ваши столбцы геометрии / географии и данные исчезнут!

Решение Вопроса

Прекрасный ответ на этот вопрос можно найти здесь:

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;
 22 февр. 2019 г., 20:00
Также стоит упомянуть, что это на самом деле не удаляет функции, а только генерирует команды удаления для последующего запуска. Немного гоча :-)
 03 окт. 2017 г., 18:10
Вышеуказанный SQL не будет работать с не строчными или буквенно-цифровыми именами функций / схем. Лучше использовать quote_ident или формат («DROP FUNCTION% I.% I (% s);», nspname, proname, oidvectortypes (proargtypes)), чтобы правильно указывать идентификаторы SQL.
 20 авг. 2016 г., 06:06
Oftentimes,ms.nspname = 'public' применяется.

Ваш ответ на вопрос