Büyük CSV dosyasını PostGIS'e aktarın


12

CSG dosyalarını PostGIS'e aktarmaya çalışıyorum. Bu yazının ardından daha önce tablolar oluşturdum. Copy komutunu çalıştırabileceğimi söyleyen başka öneriler buldum.

Bu komutu çalıştırırsam:

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

masayı hiç kopyalamadı. "Tablo" nun tanınmadığını söylüyor.

Bunu denedim:

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;

ama işe yaramadı.

Bu veri kümesine bir örnek bu linkten indirilebilir :

Bir model oluşturmalı ve sonra çalıştırmalı mıyım?


3
COPY moulding FROM '/Users/macbook/file.csv' DELIMITERS ',' CSV HEADER;
Denediniz

tableGenel şemanızda adlandırılmış bir tablonuz var mı?
Luís de Sousa

Hayır ! Kopyala işlevini kullanarak bu dosyayı almaya çalışıyorum.
user3001937

Gerçekten CSV veya Shapefile kullanıyor musunuz? Sorunuz CSV diyor, ancak örnek shp ... Ayrıca, hangi postgis sürümünü kullanıyorsunuz?
BradHards

@BradHards: Dosyayı indirirseniz, CSV uzantılı dosyayı bulurum. Postgis'in en son sürümünü kullanıyorum. psql (9.3.1, sunucu 9.3.2)
user3001937

Yanıtlar:


10

Neredeyse oradasınız ama bence sorun, yüklediğiniz tablo olabilir.

PostGIS'te doğru sütun türleriyle önceden oluşturulmuş bir tablonuz olması gerekir

Örneğin

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

Ancak, sütun türünü CSV'deki aynı tür verilerle eşleştirmeniz gerekir.

Tüm Veri Türlerini burada görebilirsiniz http://www.postgresql.org/docs/9.1/static/datatype.html

Tabloyu oluşturduktan sonra orijinal komutu kullanabilirsiniz

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

Daha sonra dizinler ve bir geometri oluşturmanız gerekir


4

Bu, bellek yoğun olsa da, bir .vrt dosyası kullanılarak GDAL ile de yapılabilir.

Vrt şöyle görünecektir:

<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> 

Sonra basitçe:

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

Tam bir kılavuz için bkz:

PostGIS'ye CSV OS CodePoint Verilerini Yükleme

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.