I'm developing a python script that uses shp2sql via subprocess.call().
The string I'm using works fine on Linux Mint:
shp2pgsql -s 4326 ../data/download.shp ccd_hoods_new | psql -h hostname -d databasename -U username -P password -q
However, when I run the script on CentOS, I'm prompted for a password, which presents a new problem when deploying and automating via CRON.
The only documentation I can find is this cheatsheet, which confirms that I'm doing things correctly.
But why on the CentOS machine would it not be recognizing the -P flag?
Both servers are running the same script that points to the same host running PostgreSQL 9.6 and PostGIS 2.4.
Answer
The -P
argument to psql
is not used to supply a password; see the documentation at this link.
You can supply a password to psql
using one of three methods:
- Enter the password at a prompt
- Enter the password in your
~/.pgpass
file - Set the
PGPASSWORD
environment variable
Maybe your Mint system has the password defined using #2 or #3? If not, perhaps the server has disabled authentication when connecting from certain IP addresses.
EDIT by @DPSSpatial
works by constructing the following command:
shp2pgsql -s 4326 ../data/download.shp ccd_hoods_new | PGPASSWORD=password psql -h hostname -d database -U username -q
I found this syntax from this post: https://stackoverflow.com/a/24953448/1704448
No comments:
Post a Comment