2012-05-14 5 views
18

古いPostGISの壊れたバージョンのデータベースがインストールされています。データベースのすべての機能を簡単に削除したいと思います(PostGISのすべてです)。これを行う簡単な方法はありますか?関数名のリストを単純に抽出しても、大きなDROP FUNCTION文を作成するだけで問題ありません。Postgresデータベースからすべての機能を削除してください

答えて

25

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

多くの場合、 'ms.nspname = 'public''が適用されます。 – Drux

+0

上記のSQLは、小文字ではなく英数字の関数/スキーマ名では失敗します。 quote_identまたはformat( 'DROP FUNCTION%I%(%s);'、nspname、proname、oidvectortypes(proargtypes))を使用して、SQL識別子が正しく引用されるようにしてください。 –

3

postgis.sql enabler install scriptがあったのと同様に、uninstall_postgis.sqlアンインストールスクリプトもあります。

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

警告:ジオメトリ/ジオグラフィーの列とデータが消えるのを見てください。

関連する問題