如何使用PHP将shapefile导入postgresql

时间:2018-01-31 08:56:46

标签: php postgresql cmd exec shapefile

下面的命令通过cmd成功将shapefile上传到postgresql。

shp2pgsql -I -s 4326 E:\SAITEJA_AND_VISHAL\sampleData\dist_bnd.shp  haryana | psql -U postgres -d haryana 

我无法通过php完成它。请帮我解决这个问题。

<?php

$command = 'C:\Program Files\PostgreSQL\9.6\bin.exe shp2pgsql -I -s 4326 E:\SAITEJA_AND_VISHAL\sampleData\dist_bnd.shp  haryana | psql -U postgres -d haryana'; 
$output = exec($command);
  print_r($output);
?>

提前致谢

1 个答案:

答案 0 :(得分:0)

我遇到了完全相同的问题(命令在cmd中有效但在通过PHP调用时没有任何内容)。帮助我很多的是检索错误消息(通过添加:2&gt;&amp; 1'和&amp; $输出)。我的命令看起来像:

?php
exec("\"C:\Program Files\PostgreSQL\9.6\bin\shp2pgsql.exe\" -s 28992 -I -W 
latin1 D:\somefolder\someshape.shp someschema.example_shape | psql -U postgres -h localhost -d somedbname 2>&1", $output);
foreach ($output as $key => $value)
{echo $value;}
?>

它返回“'psql'不被识别为内部或外部命令,可操作程序或批处理文件。”我的修复是在命令中定义psql可执行文件的完整路径,如下所示:

<?php
exec("\"C:\Program Files\PostgreSQL\9.6\bin\shp2pgsql.exe\" -s 28992 -I -W 
latin1 D:\somefolder\someshape.shp someschema.example_shape | \"C:\Program 
Files\PostgreSQL\9.6\bin\psql.exe\" -U postgres -h localhost -d somedbname");