답변:
PostgreSQL 9.1의 새로운 방법
아래 RK의 조언 덕분 에이 튜토리얼을 살펴본 결과 PostgreSQL 9.1의 경우 pgAdmin 컨텍스트 메뉴를 사용하여 확장 기능 postgis
과 postgis_topology
기존 데이터베이스를 추가하기 만하면됩니다. 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
"template_postgis"라는 빈 데이터베이스를 생성 한 후 여기에 있는 지침에 ON_ERROR_ROLLBACK=on
따라 템플릿을 설정하는 데 사용 했습니다.
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
는 설정에 따라 다릅니다.
PostgreSQL 9.1 이상을 실행하는 경우 템플릿 데이터베이스를 신경 쓰지 않아도됩니다 . 데이터베이스를 만든 다음 pgAdmin의 SQL 뷰에서 입력하고 실행하십시오.
CREATE EXTENSION postgis;
그것은 공간적으로 당신의 데이터베이스를 가능하게 할 것입니다.
CREATE EXTENSION postgis_topology;
CREATE EXTENSION
수퍼 유저 권한이 필요하므로 실제로 템플릿을 작성 / 사용하는 것이 좋습니다.
실제로 이것은 postgis 설치의 기초입니다.
postgis 템플릿이 있다면 다음과 같이 새 데이터베이스를 만들 수 있습니다.
createdb -T postgistemplate -O gis gisdb
당신이 그것을 가지고 있지 않다면, 당신은 이런 식으로 이것을 할 수 있습니다 :
sudo su postgres
createdb postgistemplate
createlang plpgsql postgistemplate
psql -d postgistemplate -f /usr/share/postgresql-8.2-postgis/lwpostgis.sql
psql -d postgistemplate -f /usr/share/postgresql-8.2-postgis/spatial_ref_sys.sql
bash 스크립트 Debian / Ubuntu-create_template_postgis-debian.sh를 사용할 수 있습니다.
도움이 되길 바랍니다.
postgres
에게 터미널을 사용할 수있는 권한이없는 경우 sudo su postgres
명령이 자동으로 실패합니다. 이를 극복하기 위해 sudo -u postgres
postgres 사용자로 전환하지 않고 postgres 사용자로 명령을 실행하기 위해이 모든 명령에 선행 할 수 있습니다 .
내가 기억하는 한, 워크샵에서 템플릿 데이터베이스를 생성하는 데 사용할 수있는 스크립트가 있습니다. https://github.com/pgRouting/pgrouting-contrib/blob/master/scripts/create_templates.sh 에서도 제공됩니다.
결국 데비안 / 우분투에서 작동하도록 작성되었으므로 여기저기서 몇 가지를 변경해야합니다. 그러나 필요한 것을 선택할 수 있습니다.
#!/bin/sh
instance_name=$1
psql << EOF
create database $instance_name;
\connect $instance_name
-- Enable PostGIS (includes raster)
CREATE EXTENSION postgis;
-- Enable Topology
CREATE EXTENSION postgis_topology;
-- fuzzy matching needed for Tiger
CREATE EXTENSION fuzzystrmatch;
-- Enable US Tiger Geocoder
CREATE EXTENSION postgis_tiger_geocoder;
EOF
이 bash 스크립트를 사용하여 postgis가 활성화되고 stdin에 이름이 지정된 새 데이터베이스 작성을 실행합니다.
포스트그레스 9.3
PostGIS 2.1.3