首页 > 解决方案 > \copy PSQL 命令不适用于 POINT(...) 几何类型

问题描述

我一直在努力寻找解决方案很长一段时间...

Postgres 中的\copy命令不适用于 datatype geography(Point,4326)

它给出的错误是:

ERROR:  parse error - invalid geometry
HINT:  "ST" <-- parse error at position 2 within geometry
CONTEXT:  COPY data2, line 1, column loc: "ST_GeomFromText('POINT(62.0271954112486 87.9028962135794)')"

这是我正在使用的命令:

\copy data2(loc,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10) from 'fake_data.csv' delimiter ',' csv;

我已经使用与 csv 文件完全相同的格式插入到表中,并且它已经成功。似乎它只是\copy命令不喜欢格式的东西。

这是我的 csv 文件中的示例行:

ST_GeomFromEWKT('SRID=4326;POINT(28.872109890126964 160.10529558104636)'),24.237968,129.512386,227.032799,27.644993,60.959401,25.178026,201.229746,34.178728,250.975993,3.635878

标签: postgresqlpostgis

解决方案


您不能使用COPY来处理这样的表达式。相反,该文件必须包含扩展的众所周知的二进制(EWKB) 格式,这是您在运行时得到的

SELECT ST_GeomFromEWKT('SRID=4326;POINT(81.5538863138809 42.72341176405514)');

在您的情况下,CVS 文件必须如下所示:

0101000020E61000000C9D009842DF3C403DA0D6945E036440,24.237968,129.512386,227.032799,27.644993,60.959401,25.178026,201.229746,34.178728,250.975993,3.635878

推荐阅读