postgis 데이터베이스에서 shapefile을 가져 오기 위해 ogr2ogr을 사용하고 싶습니다. ogr2ogr을 성공적으로 설치했으며 pgsql에서 다음 명령을 실행합니다.
ogr2ogr -f "PostgreSQL" PG:"host=localhost user=user_1 password=***** dbname=imports" world_boundaries.shp
내가 얻는 것은 오류 메시지입니다.
Unable to open datasource `world_boundaries.shp' with the following drivers: --a list of drivers follows (ESRI Shape File etc.)
또한 shapefile의 전체 경로를 정의하려고 시도했지만 동일한 메시지가 나타납니다.
또한 나는 다음을 실행하려고 시도했다.
ogrinfo world_boundaries.shp
같은 것.
파일 권한 문제를 해결 한 후 다음 오류가 발생합니다.
ERROR 1: AddGeometryColumn failed for layer world_boundaries, layer creation has failed.
ERROR 1: Terminating translation prematurely after failed
translation of layer world_boundaries (use -skipfailures to skip errors)
또한 GUI shp2pgsql을 통해 가져 오려고했는데 다음 오류가 발생합니다.
ALTER TABLE "public".""
Failed in pgui_exec(): ERROR: permission denied for relation spatial_ref_sys
CONTEXT: SQL statement "SELECT SRID FROM spatial_ref_sys WHERE SRID = new_srid"
PL/pgSQL function addgeometrycolumn(character varying,character varying,character varying,character varying,integer,character varying,integer,boolean) line 50 at SQL statement
SQL statement "SELECT AddGeometryColumn('',$1,$2,$3,$4,$5,$6,$7)"
PL/pgSQL function addgeometrycolumn(character varying,character varying,character varying,integer,character varying,integer,boolean) line 5 at SQL statement
Shapefile import failed.
이번 문제는이 데이터베이스 사용자에게 충분한 권한이 없다는 것입니다. 이것은 그것을 고쳤다 :
GRANT ALL ON TABLE spatial_ref_sys TO my_user_name;
다음 오류 메시지는 다음과 같습니다.
Warning 1: Geometry to be inserted is of type 3D Multi Polygon, whereas the layer geometry type is 3D Polygon.
Insertion is likely to fail
ERROR 1: INSERT command for new feature failed.
ERROR: Geometry type (MultiPolygon) does not match column type (Polygon)
따라서 매개 변수를 사용해야 할 것 같습니다. -nlt MULTIPOLYGON 그러나 그렇게 할 때 또 다른 오류가 발생합니다.
ERROR 1: PostgreSQL driver doesn't currently support database creation.
Please create database with the `createdb' command.
PostgreSQL driver failed to create PG:host=localhost user=my_user_name dbname=my_database password=password -nlt POLYGON
그러나 shp2pgsql GUI를 사용하여로드됩니다.
@elrobis의 댓글이 마침내 작동했습니다. DB에 데이터가 올바르게로드되었습니다!
ogr2ogr -f "PostgreSQL" PG:"host=localhost user=geonode dbname=geonode_imports password=geonode" -nlt GEOMETRY wld_bnd_adm0_gaul_2015.shp
-nln layername
인수를 추가하십시오 . 아마 -overwrite
그것이 생명에 관한 것인지를보기 위해 아마 함께 . 또한 내가 당신이라면, 나는 sudo
권한과 특권을 배제하기 위해 supergres 인 postgres 수퍼 유저와 함께 ogr2ogr을 실행 합니다. 스크립트가 확실 해지면 성가신 권한과 특권을 얻을 수 있습니다. :)