从SQL Server导出空间数据至ESRI Shapefile时遇OGR2OGR报错
解决ogr2ogr导出SQL空间数据到ESRI Shapefile的错误
你遇到的问题主要源于对Shapefile存储逻辑的误解,加上命令里的路径格式错误,我来一步步帮你搞定:
错误原因拆解
ERROR 1: Failed to create directory C:\Users\sqlexport.shp for shapefile datastore.
ERROR 1: ESRI Shapefile driver failed to create C:\Users\sqlexport.shp
ESRI Shapefile不是单个独立文件,而是由.shp、.shx、.dbf等多个关联文件组成的数据集,ogr2ogr需要一个文件夹来存放这些文件,而不是直接指定.shp文件名。另外你命令里的路径前后有多余空格,也会导致解析失败。
修正后的命令
下面是调整后的正确命令,我标注了关键修改点:
ogr2ogr -f "ESRI Shapefile" "C:\Users\sqlexport" "MSSQL:server=PORT_7FMW8H2;database=testdbspatial;trusted_connection=yes" -sql "select * from DRShape" -overwrite
关键修改说明
- 目标路径调整:把原来的
" C:\Users\sqlexport.shp "改成"C:\Users\sqlexport"。这里指定的是一个文件夹名,ogr2ogr会自动创建这个文件夹(如果不存在),并在里面生成完整的Shapefile相关文件。 - 移除多余空格:删除了路径字符串前后、MSSQL连接字符串末尾的多余空格,这些空格会让ogr2ogr错误解析路径。
可选方案
如果你不想新建单独的文件夹,也可以直接指定到C:\Users目录,这样生成的Shapefile会以你的查询表名DRShape命名,命令如下:
ogr2ogr -f "ESRI Shapefile" "C:\Users" "MSSQL:server=PORT_7FMW8H2;database=testdbspatial;trusted_connection=yes" -sql "select * from DRShape" -overwrite
执行后会在C:\Users下生成DRShape.shp、DRShape.shx、DRShape.dbf等文件。
额外注意事项
如果执行命令时仍然提示权限错误,右键点击命令提示符/终端,选择以管理员身份运行后再执行,因为C:\Users目录通常需要较高权限才能写入文件。
内容的提问来源于stack exchange,提问作者amine bak
相关产品推荐
相关产品推荐

