У меня есть база данных с установленной старой неработающей версией PostGIS. Я хотел бы легко удалить все функции в базе данных (все они из PostGIS). Есть простой способ сделать это? Было бы приемлемо даже простое извлечение списка имен функций, поскольку я мог бы просто сделать большой оператор DROP FUNCTION
.
Удалить все функции из базы данных Postgres
Ответы (2)
точный ответ на этот вопрос можно найти здесь:
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;
person
ChristopheD
schedule
14.05.2012
Часто применяется
ms.nspname = 'public'
.
- person Drux; 20.08.2016
Вышеупомянутый SQL не будет работать с нестрочными или не буквенно-цифровыми именами функций / схем. Лучше использовать quote_ident или format ('DROP FUNCTION% I.% I (% s);', nspname, proname, oidvectortypes (proargtypes)) для правильного цитирования идентификаторов SQL.
- person oᴉɹǝɥɔ; 03.10.2017
Также стоит упомянуть, что это фактически не отбрасывает функции, а просто генерирует команды отбрасывания, которые будут запускаться впоследствии. Немного попался :-)
- person mpowered; 22.02.2019
Так же, как был postgis.sql
сценарий установки enabler, существует также uninstall_postgis.sql
сценарий удаления .
psql -d [yourdatabase] -f /path/to/uninstall_postgis.sql
Предупреждение: будьте готовы к тому, что ваши геометрические / географические столбцы и данные исчезнут!
person
Mike T
schedule
14.05.2012