导入.shp到PostgreSQL吗?


14

我想将一个shp文件导入postgreSQL。首先,我创建sql文件,然后运行PostgreSQL。要创建sql文件,我在Windows cmd中运行以下命令:

shp2pgsql -s 4326 worldCountries.shp worldcountries postgres > worldcountries.sql

然后运行:

psql -d postgres -U postgres -p 4321 -f worldcountries.sql

但结果是:

psql:worldcountries.sql:21:错误:函数addGeometrycolumn(未知,未知,未知,未知,未知,整数)不存在

Answers:


13
ERROR: **function addGeometrycolumn**(unknown, unknown, unknown, unknown,unknown, integer) does not exist

似乎尚未安装PostGIS。PostGIS是Postgres的扩展,允许使用地理文件。

安装它,导入即可正常进行。


3
命令是"CREATE EXTENSION postgis;"postgis.net/docs/…
user30184

1
@ user30184绝对正确,但请注意,此假设是PostgreSQL 9.1或更高版本。(我认为几乎没有理由使用任何较旧的东西。)
jpmc26 2014年



0

您的psql中有一个不同的投影;并且不需要投影。您是否要添加形状文件的架构?

这应该工作:

shp2pgsql -s 4326 -I worldcountries.shp schema.worldcountries > dr_worldcountries.sql

psql -f worldcountries.sql -h [host] -d [database] -U postgres

3
-pfor psql告诉它服务器的端口,而不是投影。投影将嵌入到SQL脚本中。见精细的手工进行psql的行为。在这种情况下,OP指定的端口不是默认端口,因此是必需的。我通常也建议不要存储没有投影的形状。这限制了您更改投影的能力,这可能有助于获得更准确的计算。
jpmc26 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.