3 votos

¿Cómo importar un archivo CSV en una base de datos Postgis con formato de campo de ubicación?

Estoy trabajando para importar un CSV en una tabla en mi base de datos Postgis.

Primero, creé la tabla

Create Table test (
name varchar,
created_date Date,
location double precision
);

Cuando ejecuté el comando

COPY test FROM 'data/file.csv' DELIMITERS ',' CSV HEADER;

Me salió este error:

ERROR:  invalid input syntax for type double precision: "(40.74053344654042, -74.00778384953068)"
CONTEXT:  COPY test, line 2, column location: "(40.74053344654042, -74.00778384953068)"

¿Qué tipo de dato debo utilizar al crear el modelo ? ¿Float, double precision o qué exactamente?

Los datos son similares a (40.74053344654042, -74.00778384953068)

ACTUALIZACIÓN: El archivo CSV se ve así:

name,created_date,location
"Coffe",01/02/2007,(40.74053344654042, -74.00778384953068)
"School",01/02/2007,(40.72324713800021, -74.00495699358042)
"Building 234",01/02/2007,(40.842741313574706, -73.83840584215893)
"Building 4",01/02/2007,(40.842741313574706, -73.83840584215893)
"Building 2435",01/02/2007,(40.75433132495244, -73.99262239963087)
"Building 255",01/02/2007,(40.74482004786735, -73.98511337722212)

1voto

djq Puntos 7670

Te sugiero organizar tus datos de esta manera:

nombre,fecha_creacion,lon, lat

"Café",01/02/2007,40.74053344654042,-74.00778384953068

Crear una tabla como esta:

CREATE TABLE test (
nombre varchar,
fecha_creacion Date,
lon numeric,
lat numeric
);

Cargar los datos así:

\COPY test FROM 'data/file.csv' DELIMITERS ',' CSV HEADER;

Y luego crear un campo de geometría, utilizando las columnas lon/lat:

ALTER TABLE test ADD COLUMN geom geometry(POINT, 4326);
UPDATE test SET geom = ST_SetSRID(ST_MakePoint(lon, lat) ,4326);
CREATE INDEX idx_test ON test USING GIST ( geom );

0voto

Intenta usar datos numéricos en lugar de precisión doble,

parece que la precisión doble solo puede admitir hasta 15 lugares decimales, por lo que tal vez tu precisión de coordenadas sea mayor que eso

puedes encontrar más detalles sobre los tipos de datos de postgresql aquí - http://www.postgresql.org/docs/9.1/static/datatype-numeric.html

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