ogr2ogr を使用して新しい GIS データ (osm または特定のもの) を shp から 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を参照)
解決策がありましたら、どうもありがとうございました。私の悪い英語で申し訳ありません!
シリル