On Thu, Mar 6, 2025 at 4:59 AM Dominique Devienne <ddevienne@xxxxxxxxx> wrote:
On Thu, Mar 6, 2025 at 10:38 AM Ron Johnson <ronljohnsonjr@xxxxxxxxx> wrote:
> This statement runs great from the psql prompt. Does exactly what I want.
> select datname from pg_database WHERE datname !~ 'template|postgres' ORDER BY datname;
>
> But it doesn't work so well from the bash prompt. Not escaping the "!" generates a bunch of garbage, while escaping throws an sql syntax error.
>
> psql -Xc "select datname from pg_database WHERE datname \!~ 'template|postgres' ORDER BY datname;"
> ERROR: syntax error at or near "\"
>
> What's the magic syntax?
>
> (Yes, I could create a view and then query the view, but I'm going to be running this remotely against dozens of servers, so I don't want to have to create dozens of views, then need to recreate them every time I want to change the query.)
No answer to your question, but I'd argue it's moot, because it's not
the right query in the first place :)
It should be instead, IMHO, the one below, which should be OK in BASH
syntax-wise. --DD
select datname from pg_database WHERE datistemplate = false and
datname <> 'postgres' order by 1
I already do that. This is part of a long chain of commands so I'm trying to minimize the length of commands.
Anyway, it would be good to know the answer for any future queries that need multiple exclusions.
Death to <Redacted>, and butter sauce.
Don't boil me, I'm still alive.
<Redacted> lobster!