의 제안 후 user30184 , 폴 램지 내 자신의 실험. 나는이 질문에 답하기로했다.
이 질문에서 데이터를 원격 서버로 가져오고 있다고 언급하지 못했습니다. (내가 참조하는 블로그 게시물에 설명되어 있지만). 인터넷을 통한 삽입과 같은 작업에는 네트워크 대기 시간이 적용됩니다. 이 서버가 Amazon RDS 에 있다는 것을 언급하는 것은 중요하지 않습니다 . 이로 인해 ssh가 시스템으로 ssh하고 로컬로 작업을 실행할 수 없습니다.
이를 염두에두고 데이터의 덤프를 새 테이블로 승격시키기 위해 "\ copy"지시문을 사용하여 접근 방식을 다시 설계했습니다. 나는이 전략이 필수 열쇠라고 생각하며,이 질문에 대한 의견 / 응답에서도 언급되었습니다.
psql database -U user -h host.eu-west-1.rds.amazonaws.com -c "\copy newt_table from 'data.csv' with DELIMITER ','"
이 작업은 엄청나게 빨랐습니다. CSV를 가져온 후 지오메트리를 채우고 공간 인덱스를 추가하는 등의 모든 작업을 수행 했습니다. 서버 에서 쿼리를 실행했기 때문에 여전히 매우 빠릅니다 .
나는 user30184 , Paul Ramsey 의 제안도 벤치마킹하기로 결정했다 . 내 데이터 파일은 3035369 레코드와 82MB의 포인트 셰이프 파일이었습니다.
ogr2ogr 접근 방식 (PG_USE_COPY 지시문 사용)은 1:03:00 m에 완료되었으며 이는 여전히 이전보다 훨씬 낫습니다.
shp2pgsql 접근법 (-D 지시문 사용)은 00:01:04 m에만 완료되었습니다.
ogr2ogr은 작업 중에 공간 인덱스를 작성했지만 shp2pgsql은 공간 인덱스를 작성하지 않았습니다. 나는 그것이 인덱스를 만드는 데 훨씬 더 효율적임을 발견 한 후 가져 오기를 수행보다는 복부 팽만 이러한 형식의 요청 가져 오기 작업을.
결론은 다음과 같습니다. shp2pgsql은 매개 변수가 올바르게 설정되면 대량의 가져 오기, 즉 Amazon Web Services와 함께 제공되는 가져 오기를 수행하는 데 매우 적합 합니다.
이 게시물 의 업데이트에서 이러한 결론에 대한 자세한 설명을 읽을 수 있습니다 .