From: | Rob Sargent <robjsargent(at)gmail(dot)com> |
---|---|
To: | pgsql-general(at)lists(dot)postgresql(dot)org |
Subject: | Re: Script checking to see what database it's connected to |
Date: | 2021-02-21 23:26:54 |
Message-ID: | 747b62a4-128c-093e-e212-252c34cea42c@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
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(at)#
>
> postgres=# \if ':DBNAME' == postgres
> unrecognized value ":DBNAME == postgres" for "\if expression": Boolean
> expected
> postgres(at)#
>
> postgres=# \if :DBNAME == 'postgres'
> unrecognized value "postgres == postgres" for "\if expression": Boolean
> expected
> postgres(at)#
>
> postgres=# \if ':DBNAME' == 'postgres'
> unrecognized value ":DBNAME == postgres" for "\if expression": Boolean
> expected
> postgres(at)#
>
>
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/
From | Date | Subject | |
---|---|---|---|
Next Message | Guyren Howe | 2021-02-21 23:38:21 | How to determine server's own IP address? inet_server_addr not working |
Previous Message | Julien Rouhaud | 2021-02-21 23:26:13 | Re: Script checking to see what database it's connected to |