Importa file CSV di grandi dimensioni in PostGIS


12

Sto cercando di importare file CSV in PostGIS. A seguito di questo post , ho creato tabelle prima. Ho trovato altri suggerimenti che dicono che posso eseguire il comando copia.

Se eseguo questo comando:

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

non ha copiato affatto la tabella. Dice che "table" non è riconosciuto.

Ho provato questo:

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;

ma non ha funzionato neanche.

Un esempio di tale set di dati può essere scaricato da questo link :

Devo creare un modello e quindi eseguirlo?


3
Hai provatoCOPY moulding FROM '/Users/macbook/file.csv' DELIMITERS ',' CSV HEADER;
underdark

Hai una tabella nominata tablenel tuo schema pubblico?
Luís de Sousa,

No ! Sto cercando di importare quel file usando la funzione Copia.
user3001937

Stai davvero usando CSV o Shapefile? La tua domanda dice CSV, ma l'esempio è shp ... Inoltre, quale versione di Postgis stai usando?
BradHards,

@BradHards: se scarichi il file, trovo il file con estensione CSV. Uso l'ultima versione di Postgis. psql (9.3.1, server 9.3.2)
user3001937

Risposte:


10

Ci sei quasi ma penso che il problema potrebbe essere la tabella in cui stai caricando.

Devi aver già creato una tabella in PostGIS con i tipi di colonna corretti

Per esempio

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

Ma devi abbinare il tipo di colonna con lo stesso tipo di dati nel CSV.

Puoi vedere tutti i tipi di dati qui http://www.postgresql.org/docs/9.1/static/datatype.html

Dopo aver creato la tabella, è possibile utilizzare il comando originale

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

Sarà quindi necessario creare indici e una geometria


4

Questo può essere fatto anche con GDAL usando un file .vrt, sebbene possa richiedere molta memoria.

Sembrerebbe che:

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

Quindi semplicemente:

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

Per una guida completa vedere:

Caricamento dei dati CodePoint del sistema operativo CSV in PostGIS

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.