13 votos

Importar archivo CSV grande en PostGIS

Estoy tratando de importar archivos CSV en PostGIS. Después de este post, he creado las tablas antes. He encontrado otras sugerencias de decir que no se puede ejecutar el comando copiar.

Si ejecuta este comando:

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

no copia la tabla en todos los. Se dice que la "mesa" no es reconocido.

He intentado esto:

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;

pero no funciona tampoco.

Un ejemplo de este tipo de conjunto de datos puede ser descargado desde este enlace:

Debo crear un modelo y, a continuación, ejecutarlo?

4 votos

¿Intentaste COPY moulding FROM '/Users/macbook/file.csv' DELIMITERS ',' CSV HEADER;

1 votos

¿Tiene una tabla llamada table en su esquema público?

0 votos

¡No! Estoy tratando de importar ese archivo utilizando la función de copia.

13voto

Ignacio Vazquez-Abrams Puntos 30600

Ya casi estás ahí, pero creo que el problema puede ser la mesa en la que estás cargando.

Ya debe haber creado una tabla en PostGIS con los tipos de columna correctos

Por ejemplo

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

Pero tienes que hacer coincidir el tipo de columna con el mismo tipo de datos en el CSV.

Puedes ver todos los tipos de datos aquí http://www.postgresql.org/docs/9.1/static/datatype.html

Una vez que hayas creado la tabla puedes usar el comando original

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

Entonces tendrás que crear índices y una geometría

0 votos

El psql \copy también puede ser interesante, ya que permite cargar un archivo desde otra máquina y no requiere privilegios tan altos. Vea la última parte de este artículo para más detalles: postgresqltutorial.com/export-postgresql-table-to-csv-file

5voto

Chris Puntos 128

Esto también se puede hacer con GDAL usando un archivo .vrt, aunque puede ser intensivo en memoria.

Te verías como..:

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

Entonces simplemente:

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

Para una guía completa ver:

Cargando datos de CSV OS CodePoint en PostGIS

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X