我正在尝试将空间文件导入我的数据库
首先,我使用postgis template
创建了一个数据库,如下所示
createdb -T template_postgis database_name;
我已经在我的机器上安装了postgis
POSTGIS="2.1.1 r12113" GEOS="3.3.3-CAPI-1.7.4" PROJ="Rel. 4.8.0, 6 March 2012" GDAL="GDAL 1.9.0, released 2011/12/29" LIBXML="2.7.8" LIBJSON="UNKNOWN" TOPOLOGY RASTER
Postgres版本:psql (9.3.2, server 9.1.11)
其次我已将空间文件转换为sql文件,如下所示
shp2pgsql -s 3425 Aspire.shp test_for_shape_data database_name > shapefile_data.sql
现在我正在尝试将此sql文件(shapefile_data.sql)导入我的数据库(database_name),如下所示
psql -d database_name username -f shapefile_data.sql
但是我收到以下错误
user@user:~/user/spice$ psql -d psql -d database_name username -f shapefile_data.sql
SET
SET
BEGIN
psql:shapefile_data.sql:30: NOTICE: CREATE TABLE will create implicit sequence "test_for_shape_data_gid_seq" for serial column "test_for_shape_data.gid"
CREATE TABLE
psql:shapefile_data.sql:31: NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "test_for_shape_data_pkey" for table "test_for_shape_data"
ALTER TABLE
psql:shapefile_data.sql:32: ERROR: function addgeometrycolumn(unknown, unknown, unknown, unknown, unknown, integer) is not unique
LINE 1: SELECT AddGeometryColumn('','test_for_shape_data','geom','42...
^
HINT: Could not choose a best candidate function. You might need to add explicit type casts.
psql:shapefile_data.sql:33: ERROR: current transaction is aborted, commands ignored until end of transaction block
psql:shapefile_data.sql:34: ERROR: current transaction is aborted, commands ignored until end of transaction block
...........
.......
为什么它告诉我即使我使用AddGeometryColumn
创建了数据库,我也没有postgis template
功能?
那么如何避免这种情况呢?
此外,当我尝试手动启用postgis功能时,它告诉已存在
database_name=# CREATE EXTENSION postgis;
ERROR: type "spheroid" already exists
database_name=# CREATE EXTENSION postgis_topology;
ERROR: required extension "postgis" is not installed
那么如何清除此错误并将shapefile sql文件插入数据库?
答案 0 :(得分:2)
听起来你有一个旧的PostGIS安装是从SQL脚本,扩展前支持创建的。它可能只具有您期望的一些功能和特性。当您拥有PostGIS 1.5架构和PostGIS 2.0安装等时,可能会发生这种行为。
尝试从template0
创建数据库,然后运行CREATE EXTENSION postgis;
然后执行还原。我怀疑您的template_postgis
包含旧版本的扩展架构。