Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 使用shp2pgsql在postgis上导入形状文件时出错(无法打开形状文件)?_Postgresql_Postgis - Fatal编程技术网

Postgresql 使用shp2pgsql在postgis上导入形状文件时出错(无法打开形状文件)?

Postgresql 使用shp2pgsql在postgis上导入形状文件时出错(无法打开形状文件)?,postgresql,postgis,Postgresql,Postgis,我使用postgresql 9.1和postgis 2.0.1。为了将shapefile导入数据库,我使用shp2pgsql。我尝试了许多导入这些形状文件的方法(shp2pgsql-I roads.shp public.roads | psql-d map),但结果总是: 无法打开roads.shp或roads.shp。 道路:无法打开dbf文件(.dbf) 我如何解决这个问题 一个“shapefile”实际上是多个文件(即,不仅仅是一个.shp文件)。与任何GIS软件(包括shp2pgsql)

我使用postgresql 9.1和postgis 2.0.1。为了将shapefile导入数据库,我使用shp2pgsql。我尝试了许多导入这些形状文件的方法(shp2pgsql-I roads.shp public.roads | psql-d map),但结果总是:

无法打开roads.shp或roads.shp。
道路:无法打开dbf文件(.dbf)

我如何解决这个问题

一个“shapefile”实际上是多个文件(即,不仅仅是一个.shp文件)。与任何GIS软件(包括shp2pgsql)一起使用时,请确保所有文件都位于同一文件夹中

共享公共前缀的最低要求文件为:

  • .shp-几何数据
  • .dbf-属性数据
  • .shx-几何体索引文件

其他文件可能包括:.prj、.sbn、.sbx、.fbn、.fbx、.ain、.aih、.ixs、.mxs、.atx、.shp.xml和.cpg。

在遇到同样的问题并且将文件移动到较小的路径没有帮助后,我尝试使用.shp文件的完整路径,而不是在同一文件夹中只引用文件名

幸运的是,这是我的问题,从那以后它就起作用了


Lubuntu 12-Postgres 9.3遇到了相同的问题,我发现(.shp)和(.dbf)文件的路径包含空间

e、 g.目标形状文件的路径是
home/my name/shapefiles/myshape.shp
,其中包含终端无法识别的
(一个空格)

解决方案是添加一个反斜杠,后跟一个类似
\
的空格,而不是一个类似
的空格

在我的示例中,在终端中键入路径
home/my\name/shapefiles/myshape.shp
而且效果非常好。试试看

类似于我们在大多数编程语言中处理字符串中的空间的方式


希望这会有帮助

D:\my\u files\shapefiles \-目录名应该很短,它对我很有用,而且在我的案例中,我用“/”替换了“\”

我遇到了相同的错误,但我的案例可能与您不同。我的shp文件位于一个文件夹中,文件名由韩文、日文、中文等符号字符组成。在我将文件名更改为字母后,我的shp文件成功导入

确保文件在附近。有时,您可以使用创建空属性文件,例如QGIS。然而,正如所写,这个问题与编程无关。而且它看起来像是一个完全重复的Ok,最后我找到了解决方案。对于遇到相同情况的任何人:必须将所有文件(.shp、.shx、.dbf)上移到目录较短的文件夹中。例如:我的旧目录是“/home/myname/Desktop/”,它不工作,而我的新目录是“/home/myname/”,它工作得很好。这不是文件不存在的问题,而是因为目录的长度。我认为这个错误只发生在Linux和shp2pgsql上。@JohnBarça为什么要以postgres用户的身份运行shp2pgsql???它应该作为普通用户运行,并将其输出馈送到psql,psql接受
--username
等@mlt,这一点很好。这个错误很可能与文件的读取权限有关,不管使用的是什么用户。@Jgan在这之前,你不会使用类似于
sudo su postgres
的东西,是吗?如果你愿意,请不要。虽然这是一个理论上的答案,但它是一个很好的解释很好的答案。阅读此内容后,导入成功!@allicius提出的使用较小路径的解决方案在某些情况下确实有效,因为它们消除了包含空格的路径中的文件夹名称。上文提出了理由。