2

使用 ogr2ogr 从 shp 导入新的 GIS 数据(从 osm 或特定数据)到 pgsql 时出现问题。要创建我的表,我使用:

ogr2ogr -overwrite --config PGSQL_OGR_FID myid -gt 65536 -f "PostgreSQL" "PG:host='host' user='myself' dbname=db  password='motdepasse'" -nln rues --config GDAL_DATA "C:/OSGeo4W64/share/gdal" -t_srs EPSG:2154 "C:/test01.shp"

使用 PGSQL_OGR_FID 强制 pgsql 使用我的原始列作为主键。这个密钥必须使我的更新成为可能。

因此,要使用新数据进行更新,我想这样做:

ogr2ogr -update -append  --config PGSQL_OGR_FID myid -gt 65536 -f "PostgreSQL" "PG:host='host' user='myself' dbname=db  password='motdepasse' active_schema=public" -nln rues --config GDAL_DATA "C:/OSGeo4W64/share/gdal" -t_srs EPSG:2154 "C:/test02.shp"

但是 pgsql 根本不喜欢这样!我希望它用新的替换具有相同PK的数据,但它想保留旧的并取新的,这当然是不可能的,所以消息是:

ERROR:  duplicate key value violates unique constraint "rues_pkey"
DETAIL:  Key (osm_id)=(92868916) already exists.

是否可以使用 ogr2ogr 替换数据?似乎,在更新时,想要保留一切......我不知道该怎么办......也许在我的请求中使用 SQL 查询......

奇怪的是,这似乎与 sqlite/spatialite 一起工作!(见http://lists.osgeo.org/pipermail/gdal-dev/2011-December/031099.html

如果您有任何解决方案,非常感谢,并为我的英语不好感到抱歉!

西里尔

4

0 回答 0