如何卸载 PostGIS 旧版(预扩展)

How to uninstall PostGIS legacy (pre extensions)

这看起来像是一个转储问题。但是,我有这个遗留数据库,它是 运行 PostGIS(但不再是)并且在转储中仍然有很多 PostGIS 特定代码。像这样的东西:

CREATE TYPE box2d (
    INTERNALLENGTH = 65,
    INPUT = box2d_in,
    OUTPUT = box2d_out,
    ALIGNMENT = int4,
    STORAGE = plain
);

CREATE FUNCTION _st_concavehull(param_inputgeom geometry) RETURNS geometry
    LANGUAGE plpgsql IMMUTABLE STRICT
    AS $$
        DECLARE
        vexhull GEOMETRY;
        var_resultgeom geometry;
        var_inputgeom geometry;
        vexring GEOMETRY;
        cavering GEOMETRY;
        cavept geometry[];
        seglength double precision;
        var_tempgeom geometry;
        scale_factor integer := 1;
        i integer;

        BEGIN

                -- First compute the ConvexHull of the geometry
                vexhull := ST_ConvexHull(param_inputgeom);
                var_inputgeom := param_inputgeom;
                ...

(你懂的)。

我不介意丢失任何 GIS 相关数据,但我不应该丢失这些数据。我也很擅长倾倒和重新加载,尽管不这样做显然更好。

谢谢

FWIW,因为似乎没有官方卸载脚本(据我所知),这是我最终使用的脚本 运行,用于删除所有数据类型和函数创建者:

DROP TYPE IF EXISTS box2d CASCADE;
DROP TYPE IF EXISTS box2df CASCADE;
DROP TYPE IF EXISTS box3d CASCADE;
DROP TYPE IF EXISTS geography CASCADE;
DROP TYPE IF EXISTS geometry CASCADE;
DROP TYPE IF EXISTS geometry_dump CASCADE;
DROP TYPE IF EXISTS gidx CASCADE;
DROP TYPE IF EXISTS pgis_abs CASCADE;
DROP TYPE IF EXISTS spheroid CASCADE;
DROP TYPE IF EXISTS valid_detail CASCADE;

DROP TABLE IF EXISTS spatial_ref_sys CASCADE;

DROP FUNCTION IF EXISTS _postgis_join_selectivity(regclass, text, regclass, text, text) CASCADE;
DROP FUNCTION IF EXISTS _postgis_stats(tbl regclass, att_name text, text) CASCADE;
DROP FUNCTION IF EXISTS checkauth(text, text) CASCADE;
DROP FUNCTION IF EXISTS checkauthtrigger() CASCADE;
DROP FUNCTION IF EXISTS dropgeometrytable(table_name character varying) CASCADE;
DROP FUNCTION IF EXISTS dropgeometrytable(schema_name character varying, table_name character varying) CASCADE;
DROP FUNCTION IF EXISTS geography_analyze(internal) CASCADE;
DROP FUNCTION IF EXISTS geography_gist_compress(internal) CASCADE;
DROP FUNCTION IF EXISTS geography_gist_decompress(internal) CASCADE;
DROP FUNCTION IF EXISTS geography_gist_penalty(internal, internal, internal) CASCADE;
DROP FUNCTION IF EXISTS geography_gist_picksplit(internal, internal) CASCADE;
DROP FUNCTION IF EXISTS geography_gist_union(bytea, internal) CASCADE;
DROP FUNCTION IF EXISTS geography_typmod_in(cstring[]) CASCADE;
DROP FUNCTION IF EXISTS geography_typmod_out(integer) CASCADE;
DROP FUNCTION IF EXISTS geometry_analyze(internal) CASCADE;
DROP FUNCTION IF EXISTS geometry_gist_compress_2d(internal) CASCADE;
DROP FUNCTION IF EXISTS geometry_gist_compress_nd(internal) CASCADE;
DROP FUNCTION IF EXISTS geometry_gist_decompress_2d(internal) CASCADE;
DROP FUNCTION IF EXISTS geometry_gist_decompress_nd(internal) CASCADE;
DROP FUNCTION IF EXISTS geometry_gist_penalty_2d(internal, internal, internal) CASCADE;
DROP FUNCTION IF EXISTS geometry_gist_penalty_nd(internal, internal, internal) CASCADE;
DROP FUNCTION IF EXISTS geometry_gist_picksplit_2d(internal, internal) CASCADE;
DROP FUNCTION IF EXISTS geometry_gist_picksplit_nd(internal, internal) CASCADE;
DROP FUNCTION IF EXISTS geometry_gist_union_2d(bytea, internal) CASCADE;
DROP FUNCTION IF EXISTS geometry_gist_union_nd(bytea, internal) CASCADE;
DROP FUNCTION IF EXISTS geometry_typmod_in(cstring[]) CASCADE;
DROP FUNCTION IF EXISTS geometry_typmod_out(integer) CASCADE;
DROP FUNCTION IF EXISTS gettransactionid() CASCADE;
DROP FUNCTION IF EXISTS gserialized_gist_joinsel_2d(internal, oid, internal, smallint) CASCADE;
DROP FUNCTION IF EXISTS gserialized_gist_joinsel_nd(internal, oid, internal, smallint) CASCADE;
DROP FUNCTION IF EXISTS gserialized_gist_sel_2d(internal, oid, internal, integer) CASCADE;
DROP FUNCTION IF EXISTS gserialized_gist_sel_nd(internal, oid, internal, integer) CASCADE;
DROP FUNCTION IF EXISTS lockrow(text, text, text) CASCADE;
DROP FUNCTION IF EXISTS lockrow(text, text, text, text) CASCADE;
DROP FUNCTION IF EXISTS lockrow(text, text, text, timestamp without time zone) CASCADE;
DROP FUNCTION IF EXISTS postgis_cache_bbox() CASCADE;
DROP FUNCTION IF EXISTS postgis_constraint_dims(geomschema text, geomtable text, geomcolumn text) CASCADE;
DROP FUNCTION IF EXISTS postgis_constraint_srid(geomschema text, geomtable text, geomcolumn text) CASCADE;
DROP FUNCTION IF EXISTS postgis_constraint_type(geomschema text, geomtable text, geomcolumn text) CASCADE;
DROP FUNCTION IF EXISTS postgis_geos_version() CASCADE;
DROP FUNCTION IF EXISTS postgis_lib_build_date() CASCADE;
DROP FUNCTION IF EXISTS postgis_lib_version() CASCADE;
DROP FUNCTION IF EXISTS postgis_libjson_version() CASCADE;
DROP FUNCTION IF EXISTS postgis_libxml_version() CASCADE;
DROP FUNCTION IF EXISTS postgis_proj_version() CASCADE;
DROP FUNCTION IF EXISTS postgis_scripts_build_date() CASCADE;
DROP FUNCTION IF EXISTS postgis_scripts_installed() CASCADE;
DROP FUNCTION IF EXISTS postgis_scripts_released() CASCADE;
DROP FUNCTION IF EXISTS postgis_svn_version() CASCADE;
DROP FUNCTION IF EXISTS postgis_type_name(geomname character varying, coord_dimension integer, use_new_name boolean) CASCADE;
DROP FUNCTION IF EXISTS postgis_typmod_dims(integer) CASCADE;
DROP FUNCTION IF EXISTS postgis_typmod_srid(integer) CASCADE;
DROP FUNCTION IF EXISTS postgis_typmod_type(integer) CASCADE;
DROP FUNCTION IF EXISTS postgis_version() CASCADE;
DROP FUNCTION IF EXISTS st_area(text) CASCADE;
DROP FUNCTION IF EXISTS st_asewkt(text) CASCADE;
DROP FUNCTION IF EXISTS st_asgeojson(text) CASCADE;
DROP FUNCTION IF EXISTS st_asgml(text) CASCADE;
DROP FUNCTION IF EXISTS st_askml(text) CASCADE;
DROP FUNCTION IF EXISTS st_assvg(text) CASCADE;
DROP FUNCTION IF EXISTS st_astext(text) CASCADE;
DROP FUNCTION IF EXISTS st_coveredby(text, text) CASCADE;
DROP FUNCTION IF EXISTS st_covers(text, text) CASCADE;
DROP FUNCTION IF EXISTS st_distance(text, text) CASCADE;
DROP FUNCTION IF EXISTS st_dwithin(text, text, double precision) CASCADE;
DROP FUNCTION IF EXISTS st_intersects(text, text) CASCADE;
DROP FUNCTION IF EXISTS st_length(text) CASCADE;
DROP FUNCTION IF EXISTS st_relatematch(text, text) CASCADE;

找到更多:

DROP FUNCTION IF EXISTS box3d_extent_in(cstring) CASCADE;
DROP FUNCTION IF EXISTS box3d_extent_out(box3d_extent) CASCADE;
DROP FUNCTION IF EXISTS chip_in(cstring) CASCADE;
DROP FUNCTION IF EXISTS chip_out(chip) CASCADE;
DROP FUNCTION IF EXISTS compression(chip) CASCADE;
DROP FUNCTION IF EXISTS datatype(chip) CASCADE;
DROP FUNCTION IF EXISTS factor(chip) CASCADE;
DROP FUNCTION IF EXISTS geography_gist_join_selectivity(internal, oid, internal, smallint) CASCADE;
DROP FUNCTION IF EXISTS geography_gist_selectivity(internal, oid, internal, integer) CASCADE;
DROP FUNCTION IF EXISTS geography_typmod_dims(integer) CASCADE;
DROP FUNCTION IF EXISTS geography_typmod_srid(integer) CASCADE;
DROP FUNCTION IF EXISTS geography_typmod_type(integer) CASCADE;
DROP FUNCTION IF EXISTS geometry_gist_joinsel(internal, oid, internal, smallint) CASCADE;
DROP FUNCTION IF EXISTS geometry_gist_sel(internal, oid, internal, integer) CASCADE;
DROP FUNCTION IF EXISTS height(chip) CASCADE;
DROP FUNCTION IF EXISTS lwgeom_gist_compress(internal) CASCADE;
DROP FUNCTION IF EXISTS lwgeom_gist_decompress(internal) CASCADE;
DROP FUNCTION IF EXISTS lwgeom_gist_penalty(internal, internal, internal) CASCADE;
DROP FUNCTION IF EXISTS lwgeom_gist_picksplit(internal, internal) CASCADE;
DROP FUNCTION IF EXISTS lwgeom_gist_union(bytea, internal) CASCADE;
DROP FUNCTION IF EXISTS postgis_gist_joinsel(internal, oid, internal, smallint) CASCADE;
DROP FUNCTION IF EXISTS postgis_gist_sel(internal, oid, internal, integer) CASCADE;
DROP FUNCTION IF EXISTS postgis_uses_stats() CASCADE;
DROP FUNCTION IF EXISTS setfactor(chip, real) CASCADE;
DROP FUNCTION IF EXISTS setsrid(chip, integer) CASCADE;
DROP FUNCTION IF EXISTS srid(chip) CASCADE;
DROP FUNCTION IF EXISTS st_chip_in(cstring) CASCADE;
DROP FUNCTION IF EXISTS st_chip_out(chip) CASCADE;
DROP FUNCTION IF EXISTS st_compression(chip) CASCADE;
DROP FUNCTION IF EXISTS st_datatype(chip) CASCADE;
DROP FUNCTION IF EXISTS st_factor(chip) CASCADE;
DROP FUNCTION IF EXISTS st_geometry_analyze(internal) CASCADE;
DROP FUNCTION IF EXISTS st_height(chip) CASCADE;
DROP FUNCTION IF EXISTS st_postgis_gist_joinsel(internal, oid, internal, smallint) CASCADE;
DROP FUNCTION IF EXISTS st_postgis_gist_sel(internal, oid, internal, integer) CASCADE;
DROP FUNCTION IF EXISTS st_setfactor(chip, real) CASCADE;
DROP FUNCTION IF EXISTS st_srid(chip) CASCADE;
DROP FUNCTION IF EXISTS st_width(chip) CASCADE;
DROP FUNCTION IF EXISTS width(chip) CASCADE;

DROP VIEW IF EXISTS geography_columns CASCADE;
DROP TABLE IF EXISTS geometry_columns CASCADE;

另外,注释掉以下内容:

sed -i 's/^CREATE PROCEDURAL LANGUAGE plpgsql;/-- CREATE PROCEDURAL LANGUAGE plpgsql;/g' db.sql