16.3. Lesson: 임포트와 엑스포트

물론, 데이터를 가져오거나 내보내기 힘든 데이터베이스는 쓸모가 없습니다. 다행히도 PostGIS에서 데이터를 쉽게 가져오거나 내보낼 수 있는 도구가 많이 있습니다.

16.3.1. shp2pgsql

shp2pgsql은 데이터베이스에 ESRI shapefile을 임포트할 수 있는 커맨드라인 도구입니다. 유닉스에서 다음 명령어를 써서 새 PostGIS 테이블을 임포트할 수 있습니다.

shp2pgsql -s <SRID> -c -D -I <path to shapefile> <schema>.<table> | \
  psql -d <databasename> -h <hostname> -U <username>

윈도우에서는, 임포트 과정을 다음 두 단계로 실행해야 합니다.

shp2pgsql -s <SRID> -c -D -I <path to shapefile> <schema>.<table> > import.sql
psql psql -d <databasename> -h <hostname> -U <username> -f import.sql

다음과 같은 오류가 발생할 수도 있습니다.

ERROR:  operator class "gist_geometry_ops" does not exist for access method
"gist"

사용자가 임포트하는 데이터에 대한 공간 인덱스의 생성 *원위치*와 관련된, 잘 알려진 문제입니다. 이 오류를 피하려면 -I 파라미터를 제외하십시오. 이렇게 하면 공간 인덱스를 자동으로 생성하지 않고, 데이터를 임포트한 뒤 사용자가 데이터베이스에 직접 생성해야 합니다. (다음 강의에서 공간 인덱스 생성에 대해 배울 것입니다.)

16.3.2. pgsql2shp

pgsql2shp는 PostGIS 테이블, 뷰, 또는 SQL 선택 쿼리를 엑스포트하는 커맨드라인 도구입니다. 유닉스에서는 이 명령어를 다음과 같이 사용합니다.

pgsql2shp -f <path to new shapefile> -g <geometry column name> \
  -h <hostname> -U <username> <databasename> <table | view>

쿼리를 이용해 데이터를 엑스포트하려면 다음과 같이 합니다.

pgsql2shp -f <path to new shapefile> -g <geometry column name> \
  -h <hostname> -U <username> "<query>"

16.3.3. ogr2ogr

ogr2ogr은 PostGIS의 데이터를 다른 데이터 포맷으로 변환하거나, 다른 데이터 포맷을 PostGIS 데이터로 변환할 수 있는 매우 강력한 도구입니다. ogr2ogr은 GDAL/OGR 소프트웨어의 일부로, 개별적으로 설치해야 합니다. PostGIS의 테이블을 GML로 엑스포트하려면 다음 명령어를 사용하면 됩니다.

ogr2ogr -f GML export.gml PG:'dbname=<databasename> user=<username>
        host=<hostname>' <Name of PostGIS-Table>

16.3.4. SPIT

SPIT은 QGIS에 내장된 QGIS 플러그인입니다. ESRI shapefile을 PostGIS로 업로드하는 데 쓸 수 있습니다.

Plugin Manager 를 통해 SPIT을 추가한 다음, 다음 버튼을 찾아보십시오.

../../../_images/008.png

이 버튼을 클릭하거나 메뉴에서 Database –> Spit –> Import Shapefiles to PostgreSQL 을 선택하면 다음과 같은 SPIT 대화 창이 뜹니다.

../../../_images/spit_dialog.png

Add 버튼을 클릭하면 데이터베이스에 shapefile을 추가할 수 있는 파일 탐색기 창이 뜹니다.

16.3.5. DB 관리자

Database 메뉴에서 DB Manager 라는 또다른 옵션을 눈치챘을지도 모르겠습니다. QGIS 2.0부터 추가된 이 새로운 도구는 PostGIS를 포함한 공간 데이터베이스와 상호 작용할 수 있는 통합 인터페이스를 제공합니다. 또 데이터베이스로 다른 포맷을 임포트할 수도, 데이터베이스에서 다른 포맷으로 엑스포트할 수도 있습니다. 다음 모듈이 거의 이 도구에 대한 내용이기 때문에, 여기에서는 간단히 언급만 하겠습니다.

16.3.6. In Conclusion

데이터베이스에(서) 데이터를 임포트하거나 엑스포트하는 방법은 여러 가지가 있습니다. 특히 서로 전혀 다른 데이터소스를 이용할 경우, 상시적으로 이 기능들, 또는 다른 비슷한 기능들을 사용하게 될 것입니다.

16.3.7. What’s Next?

다음으로 이전에 생성했던 데이터를 어떻게 쿼리할 수 있는지 알아보겠습니다.