여러 모양 파일을 Postgis에 일괄로드


11

shp2pgsql도움말 에 따르면 drop , append , create준비 옵션 은 상호 배타적입니다. 따라서 셰이프에서 테이블을 만든 다음 여러 개의 다른 셰이프 파일을 추가하려면 카운터를 유지하여 생성 또는 추가 모드인지 여부를 표시합니다.

cnt=0
for shp in $(ls *.shp); do

if [ $cnt -eq  0 ]  ; then

   shp2pgsql -s 27700 -c $shp schema.table_name | psql -h localhost db 

else

   shp2pgsql -s 27700 -a $shp schema.table_name | psql -h localhost db 

fi
((cnt++))
done

이것은 예상대로 작동하지만 더 간단한 방법이 있는지 궁금합니다.

답변:


4

ogr2ogr을 사용할 수있는 경우 추가시 작성 옵션을 무시하고 작성시 추가 옵션을 무시합니다.

for shp in $(ls *.shp);
do
  ogr2ogr -f "PostgreSQL" PG:dbname=databasename -append -a_srs 27700 -nln schema.table_name $shp
done

또는 명령 행의 창에서 :

for /R %f in (*.shp) do ogr2ogr -f "PostgreSQL" PG:dbname=databasename -append -nln schema.table_name "%f"

1
물론, ogr2ogr이 작동합니다. 간단한 해결책이 있다고 생각했습니다. 감사합니다
John Powell
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.