큰 CSV 파일을 PostGIS로 가져 오기


12

CSV 파일을 PostGIS로 가져 오려고합니다. 이 게시물에 이어 이전에 테이블을 만들었습니다. copy 명령을 실행할 수 있다고 말하는 다른 제안을 찾았습니다.

이 명령을 실행하면

COPY table FROM '/Users/macbook/file.csv' DELIMITERS ',' CSV HEADER;

테이블을 전혀 복사하지 않았습니다. "테이블"은 인식되지 않습니다.

나는 이것을 시도했다 :

COPY moulding
(Borough,Block,Lot,CD,CT2010,CB2010,SchoolDist,Council,ZipCode,FireComp,PolicePrct,Address,ZoneDist1,ZoneDist2,ZoneDist3,ZoneDist4,Overlay1,Overlay2,SPDist1,SPDist2,LtdHeight,AllZoning1,AllZoning2,SplitZone,BldgClass,LandUse,Easements,OwnerType,OwnerName,LotArea,BldgArea,ComArea,ResArea,OfficeArea,RetailArea,GarageArea,StrgeArea,FactryArea,OtherArea,AreaSource,NumBldgs,NumFloors,UnitsRes,UnitsTotal,LotFront,LotDepth,BldgFront,BldgDepth,Ext,ProxCode,IrrLotCode,LotType,BsmtCode,AssessLand,AssessTot,ExemptLand,ExemptTot,YearBuilt,BuiltCode,YearAlter1,YearAlter2,HistDist,Landmark,BuiltFAR,ResidFAR,CommFAR,FacilFAR,BoroCode,BBL,CondoNo,Tract2010,XCoord,YCoord,ZoneMap,ZMCode,Sanborn,TaxMap,EDesigNum,APPBBL,APPDate,PLUTOMapID,Version)
FROM
'/Users/macbook/file.csv'
DELIMITERS
','
CSV HEADER;

그러나 작동하지 않았습니다.

이러한 데이터 세트의 예는 다음 링크 에서 다운로드 할 수 있습니다 .

모델을 만든 다음 실행해야합니까?


3
시도 했습니까COPY moulding FROM '/Users/macbook/file.csv' DELIMITERS ',' CSV HEADER;
어두운 곳에서

table공개 스키마에 이름이 지정된 테이블이 있습니까?
Luís de Sousa

아니 ! 복사 기능을 사용하여 해당 파일을 가져 오려고합니다.
user3001937

실제로 CSV 또는 Shapefile을 사용하고 있습니까? 귀하의 질문에 CSV가 있지만 샘플은 shp입니다 ... 또한, 어떤 버전의 postgis를 사용하고 있습니까?
BradHards

@BradHards : 파일을 다운로드하면 CSV 확장명을 가진 파일을 찾습니다. 최신 버전의 Postgis를 사용합니다. psql (9.3.1, 서버 9.3.2)
user3001937

답변:


10

당신은 거의 거기에 있지만 문제는로드중인 테이블 일 것이라고 생각합니다.

PostGIS에 올바른 열 유형으로 테이블이 이미 생성되어 있어야합니다.

예를 들어

CREATE TABLE nycdata (
    BOROUGH varchar,
    BLOCK varch,
    DATE date,
    VERSION numeric);

그러나 CSV에서 동일한 유형의 데이터와 열 유형을 일치시켜야합니다.

여기에서 모든 데이터 유형을 볼 수 있습니다 http://www.postgresql.org/docs/9.1/static/datatype.html

테이블을 만든 후에는 원래 명령을 사용할 수 있습니다

COPY nycdata FROM '/Users/macbook/data.csv' DELIMITERS ',' CSV HEADER;

그런 다음 인덱스와 지오메트리를 만들어야합니다


4

메모리를 많이 사용할 수 있지만 .vrt 파일을 사용하여 GDAL을 사용하여 수행 할 수도 있습니다.

vrt는 다음과 같습니다.

<OGRVRTDataSource> 
<OGRVRTLayer name="feature_name"> 
    <SrcDataSource>your_csv.csv</SrcDataSource> 
    <GeometryType>wkbPoint</GeometryType> 
    <LayerSRS>EPSG:27700</LayerSRS> 
    <GeometryField encoding="PointFromColumns" x="Eastings" y="Northings"/> 
</OGRVRTLayer> 

그런 다음 간단히 :

ogr2ogr -progress -nln table_name_doesnt_need_to_exist -skipfailures  PostgreSQL PG:"dbname='dbname' host='localhost' port='5432'  user='username' password='password'" vrt_filename.vrt

전체 가이드는 다음을 참조하십시오.

PostGIS에 CSV OS CodePoint 데이터로드

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.