我正在使用Linux上的PostGIS软件包中的phsql2shp从PostgreSQL数据库中导出shapefile(在Windows上使用WSL)。我正在使用-m
参数指定一个映射文件。问题是映射似乎不起作用。例如,这是我正在执行的命令:
#dump_data.sh
pgsql2shp -kf shapefile.shp -m mappings.txt -h host_ip \
-u shema_name -P password db_name \
"SELECT * FROM table_name limit 10"
这就是我正在使用的mapping.txt
文件:
#mapping.txt
play PlayDesign \n
play_section AcrIdent \n
生成的Shapefile具有以下列名称:
由于某种原因,第一个映射成功,但是第二个映射不成功,应该是AcrIdent
not“ play_secti”
我怀疑这与EOL(行尾)方案有关。我已将CRLF
文件的Visual Studio代码设置为mapping.txt
。
Note:理想情况下,我想为结果列指定一个超过10个字符的名称,但这似乎是ShapeFiles的限制
奇怪的是,似乎只有postresql字段名称的前10个字符与第一列相对应。 “ PlayDesign”确实有效,因为它恰好是10个字符;无法识别“ play_section”,因为它与“ play_secti”相对应。
更奇怪的是,相同的映射确实适用于shp2pgsql。
我认为它可能被认为是错误。无论如何,解决方法是仅在第一列中写入字段名称的前10个字符(如果它与另一个字段的名称不冲突。)