Impor file CSV besar ke PostGIS

12

Saya mencoba mengimpor file CSV ke PostGIS. Setelah posting ini , saya telah membuat tabel sebelumnya. Saya menemukan saran lain yang mengatakan bahwa saya dapat menjalankan perintah salin.

Jika saya menjalankan perintah ini:

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

itu tidak menyalin tabel sama sekali. Dikatakan bahwa "tabel" tidak dikenali.

Saya mencoba ini:

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;

tapi tidak berhasil juga.

Contoh kumpulan data tersebut dapat diunduh dari tautan ini :

Haruskah saya membuat model dan kemudian menjalankannya?

pengguna3001937
sumber
3
Apakah Anda mencobaCOPY moulding FROM '/Users/macbook/file.csv' DELIMITERS ',' CSV HEADER;
underdark
Apakah Anda memiliki tabel yang disebutkan tabledalam skema publik Anda?
Luís de Sousa
Tidak ! Saya mencoba mengimpor file itu menggunakan fungsi Salin.
user3001937
Apakah Anda benar-benar menggunakan CSV atau Shapefile? Pertanyaan Anda mengatakan CSV, tetapi sampelnya adalah shp ... Juga, versi postgis mana yang Anda gunakan?
BradHards
@BradHards: Jika Anda mengunduh file, saya menemukan file dengan ekstensi CSV. Saya menggunakan versi terbaru dari Postgis. psql (9.3.1, server 9.3.2)
user3001937

Jawaban:

10

Anda hampir sampai di sana, tetapi saya pikir masalahnya mungkin adalah tabel tempat Anda memuat.

Anda harus sudah memiliki tabel yang dibuat di PostGIS dengan jenis kolom yang benar

Sebagai contoh

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

Tetapi Anda harus mencocokkan jenis kolom dengan jenis data yang sama di CSV.

Anda dapat melihat semua Tipe Data di sini http://www.postgresql.org/docs/9.1/static/datatype.html

Setelah Anda membuat tabel, Anda dapat menggunakan perintah asli

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

Anda kemudian perlu membuat indeks dan geometri

tjmgis
sumber
4

Ini juga dapat dilakukan dengan GDAL menggunakan file .vrt, meskipun itu bisa memakan banyak memori.

Anda akan terlihat seperti:

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

Maka cukup:

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

Untuk panduan lengkap, lihat:

Memuat CSV OS Data CodePoint ke dalam PostGIS

HeikkiVesanto
sumber