2011-06-12 6 views
2

분석 할 필요가있는 많은 양의 공간 데이터가 응용 프로그램에서 사용됩니다. 원본 데이터는 WKT 형식으로 표시되며 INSERT SQL 문으로 래핑하여 데이터를 업로드합니다.Postgis에서 많은 양의 공간 데이터를 업로드하는 좋은 방법은 무엇입니까?

INSERT INTO sp_table (ID_Info, "shape") VALUES ('California', , ST_GeomFromText('POLYGON((49153 4168, 49154 4168, 49155 4168, 49155 4167, 49153 4168))')); 

그러나이 방법은 시간이 너무 많이 걸리고 데이터가 큽니다 (1 천만 행). 많은 양의 공간 데이터를 업로드하는 다른 방법이 있습니까?

모든 빠른 해킹 & 트릭을 환영합니다.

답변

1

하는 것은 하나의

VACUUM

스폰 일이없는 경우이 테이블에 SERIAL PRIMARY KEY를 추가 COPY

를 사용 (적절한 열) 테이블에 텍스트 파일을 삽입 이 작업을 수행하는 CPU 당 프로세스 :

INSERT INTO sp_table (ID_Info, "shape") 
SELECT state_name, ST_GeomFromText(geom_as_text) 
FROM temp_table 
WHERE id % numbre_of_cpus = x 

각 프로세스마다 다른 "x"값을 사용하십시오. 테이블이 처리됩니다. 이렇게하면 각 코어가 저속 ST_GeomFromText 기능에서 실행될 수 있습니다.

삽입 후 GIST 색인을 만듭니다.

+0

감사합니다 @peufeu. – ablimit

1

Here 몇 가지 일반적인 성능 팁을 찾을 수 있습니다. 아마도 fsync 속성이 활성화되어 있고 모든 INSERT 명령은 하드 디스크에 물리적으로 기록되어야하므로 그만큼 많은 시간이 걸립니다.

예기치 않은 OS 충돌 후 안전하게 데이터를 복구 할 수 있으므로 fsync를 끄지 않는 것이 좋습니다 (특히 프로덕션 환경에서). 문서에 따르면

것은 그러므로 당신이 쉽게 외부 데이터로부터 전체 데이터베이스를 다시 만들 수 있습니다 경우 으로 fsync를 해제하는 유일한 것이 좋습니다.

+1

복사 속도가 빠르고 모든 팁이 좋습니다. fsync를 비활성화하면 손상 될 수 있습니다. – jordani

관련 문제