I am trying to load a shapefile in a PostGIS database using the exec() command. I have read the format I have to follow from here and I checked several similar questions from the forum.
Based on the above I wrote this script:
$command = 'shp2pgsql -s 2100 -d /home/enomix/www/EsoterikoFinal/Maps/shps/nodes.shp | psql -h localhost -p 5432 -d shapeDb -U postgres -W xxx'; $output = exec($command); print_r($output);
What I want is to load the shapefile into a newly created table which is in a database called 'shapeDb'. Every time I load a shapefile I want the previous table to be dropped and a new table to be created (that's why I use the -d option). I have defined a full path for my shapefile (should I define a relative one like: "shps/nodes"?)
When I run the script I get nothing back as a response although I have a:
ini_set('display_errors', 1);
Its the first time I do something like this. Any idea what I am doing wrong?
EDITED
Running the above command on the terminal it works fine. But I still can not figure out how to drop the previous table and create a new one each time I run the query. And also why the exec command doesn't work!
EDITED II
Now I made it work. The -W xxx was causing problems. I don't know why though (its just the password). I run my script like this:
$command = 'shp2pgsql -s 2100 /home/enomix/www/EsoterikoFinal/Maps/shps/nodes.shp | psql -h localhost -p 5432 -d esoteriko -U postgres';
exec($command,$out,$ret);
BUT still I can not figure out how to drop the table each time and create a new one. ANY IDEAS?
EDITED III
This works now:
$command = 'shp2pgsql -s 2100 -d /home/enomix/www/EsoterikoFinal/Maps/shps/nodes.shp | psql -h localhost -p 5432 -d esoteriko -U postgres';
exec($command,$out,$ret);
Note: Don't forget to add the postgis extension to your postgresql database like:
CREATE EXTENSION postgis
Answer
This works now:
$command = 'shp2pgsql -s 2100 -d /home/enomix/www/EsoterikoFinal/Maps/shps/nodes.shp | psql -h localhost -p 5432 -d esoteriko -U postgres';
exec($command,$out,$ret);
No comments:
Post a Comment