On 2/21/21 4:18 PM, Ron wrote:
Postgresql 12.5
I've got scripts which can run on multiple database (dev, test, QA,
Integration, Training, etc, etc), so of course I've got to run them like
"psql my_db_name -f script.sql".
Of course, I sometimes forget to specify the database name, and so it
fails.
Thus, I want to add a bit to the top of the script, something like this:
\if :DBNAME = postgres
echo "must not run in postgres"
exit
\endif
However, I can't seem to find the magic sauce.
This is what I've tried so far:
postgres=# \if :DBNAME == postgres
unrecognized value "postgres == postgres" for "\if expression": Boolean
expected
postgres@#
postgres=# \if ':DBNAME' == postgres
unrecognized value ":DBNAME == postgres" for "\if expression": Boolean
expected
postgres@#
postgres=# \if :DBNAME == 'postgres'
unrecognized value "postgres == postgres" for "\if expression": Boolean
expected
postgres@#
postgres=# \if ':DBNAME' == 'postgres'
unrecognized value ":DBNAME == postgres" for "\if expression": Boolean
expected
postgres@#
Take it up a notch? Write a script which takes the dbname and the
script name:
/pcode/
#!/bin/bash -e
if [[ $# -ne 2 ]]; then echo "missing arg(s)"; exit 2; fi
dbn=$1; shift;
sql=$1; shift;
psql --dbname $dbn --file $sql
/pcode/