Новый метод с PostgreSQL 9.1
Благодаря совету RK ниже, я посмотрел этот учебник и обнаружил, что для PostgreSQL 9.1 все, что вам нужно сделать, это добавить расширения postgis
и postgis_topology
в существующую базу данных, используя контекстные меню pgAdmin. Чтобы создать шаблон postgis, я создал новую базу данных с именем, template-postgis
а затем добавил эти расширения. Затем я создал свою другую базу данных, используя этот шаблон. При использовании pg_dump
я обнаружил, что размер экспорта был намного меньше, так как он, кажется, просто включает эти строки, а не выводит функции расширения:
CREATE EXTENSION IF NOT EXISTS postgis WITH SCHEMA public;
CREATE EXTENSION IF NOT EXISTS postgis_topology WITH SCHEMA topology;
Старый избыточный метод:
Я использовал файлы .sql здесь:
/Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/postgis.sql
/Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/spatial_ref_sys.sql
/Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/topology.sql
Кроме того, я получил эту ошибку, когда импортировал существующую базу данных PostGIS в новую базу данных, созданную из этого шаблона:
ERROR: type "spheroid" already exists
Поэтому я следовал приведенным здесь инструкциям и использовал их ON_ERROR_ROLLBACK=on
для настройки шаблона после создания пустой базы данных с именем "template_postgis":
psql -U postgres -d template_postgis -1 -f /Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/postgis.sql -v ON_ERROR_ROLLBACK=on
psql -U postgres -d template_postgis -1 -f /Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/spatial_ref_sys.sql -v ON_ERROR_ROLLBACK=on
psql -U postgres -d template_postgis -1 -f /Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/topology.sql -v ON_ERROR_ROLLBACK=on
И затем импортировал мою резервную копию БД, например:
psql -U someuser -d somedb -1 -f somefile.sql -v ON_ERROR_ROLLBACK=on
Еще более старый метод:
Я сделал это:
createdb -E UTF8 -T template0 template_postgis
createlang -d template_postgis plpgsql
psql --quiet -d template_postgis -f /Applications/Postgres.app/Contents/MacOS/share/extension/postgis--2.0.1.sql
Путь к postgis--2.0.1.sql
будет отличаться в зависимости от ваших настроек.