2012-05-14 6 views
18

Tengo una base de datos con una versión antigua descompuesta de PostGIS instalada en ella. Me gustaría colocar fácilmente todas las funciones en la base de datos (son todas de PostGIS). ¿Hay una manera simple de hacer esto? Incluso la simple extracción de una lista de nombres de funciones sería aceptable, ya que podría hacer una gran declaración DROP FUNCTION.Soltar todas las funciones de la base de datos de Postgres

Respuesta

25

Un fine answer to this question can be found here:

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; 
+1

A menudo, se aplica 'ms.nspname = 'public''. – Drux

+0

El SQL anterior fallará en nombres de función/esquema alfanuméricos no en minúsculas o no. Mejor uso quote_ident o formato ('DROP FUNCTION% I.% I (% s);', nspname, proname, oidvectortypes (proargtypes)) para obtener los identificadores de SQL cotizados correctamente. –

3

Así como hubo un postgis.sql enabler install script, también hay un script uninstall_postgis.sql desinstalación.

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

Advertencia: ¡Prepárese para ver desaparecer las columnas y los datos de geometría/geografía!

Cuestiones relacionadas