我有导入CSV数据到Postgres数据库与地理数据/ PostGIS的通过以下命令在我的数据库“地标”启用一个提交给Postgres:导入CSV新列
CREATE EXTENSION postgis;
所以....故事如下:
我跟随此tutorial。
我试图导入CSV这些列
name conf capital venture latitude longitude
第一线,为数据的一个例子是:
example, 1, 1, 1, 51.51923, -0.12205
我已经设置了表了教程以下除了在他的数据(地址,date_built,建筑,地标)增加的conf,资金和风险,而不是列。即:
CREATE TABLE landmarks
(
gid serial NOT NULL,
name character varying(50),
conf character varying(10),
capital character varying(10),
venture character varying(10),
the_geom geometry,
CONSTRAINT landmarks_pkey PRIMARY KEY (gid),
CONSTRAINT enforce_dims_the_geom CHECK (st_ndims(the_geom) = 2),
CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'POINT'::text OR the_geom IS NULL),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 4326)
);
然后
CREATE INDEX landmarks_the_geom_gist
ON landmarks
USING gist
(the_geom);
的数据基本上是相同的,否则他的example。
我已经正确设置了表格并启用了postgis扩展来处理好geom数据。
然而,问题是当我试图导入我的CSV:
landmarks=# \copy landmarks(name,conf,capital,venture,latitude,longitude) FROM '../../../../../var/tmp/map2.csv' DELIMITERS ',' CSV HEADER;
ERROR: column "latitude" of relation "landmarks" does not exist
现在,我注意到,当他创造了桌上,他不添加经纬度列...所以我想知道如果是这样的问题,并试图建立与这些列以及整数另一个表,但只是给我这个错误:
ptmap3=# \copy landmarks(name,conf,capital,venture,latitude,longitude) FROM '../../../../../var/tmp/map2.csv' DELIMITERS ',' CSV HEADER;
ERROR: invalid input syntax for integer: "51.51923"
CONTEXT: COPY landmarks, line 2, column latitude: "51.51923"
所以......看来,如果我添加了纬度列,然后它的工作原理,但数据失败?使用这种
od -c map2.csv
检查错误的CSV之后...有什么错我的CSV(没有隐藏字符或错误)......所以这是怎么回事?
如果任何人都可以帮我导入我的csv到这个数据库,我将非常感激!
错误:整数无效输入语法:“51.51923”分配一个字符串值的整数列时将发生该错误。你可以检查数据是如何在csv文件中获得经纬度的 –
在命令行中使用od读取,该值以character-for-character的形式存储为5 1。 5 1 9 2 3, –