Re: psql shell return codes - checking if database exists

Lists: pgsql-admin
From: Mario Splivalo <mario(dot)splivalo(at)megafon(dot)hr>
To: pgsql-admin(at)postgresql(dot)org
Subject: psql shell return codes - checking if database exists
Date: 2008-04-15 11:15:10
Message-ID: 48048E3E.2090807@megafon.hr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-admin

I need to check, from a bash script, if certain database exists in a
postgres cluster. When I issue:

psql -U someuser somedatabase

psql returns error code 2 regardless of 'no user' or 'no database'
condition. How could I distinguish from the two?

Mario


From: "Milen A(dot) Radev" <milen(at)radev(dot)net>
To: pgsql-admin(at)postgresql(dot)org
Subject: Re: psql shell return codes - checking if database exists
Date: 2008-04-15 12:10:18
Message-ID: fu25vb$oii$1@ger.gmane.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-admin

Mario Splivalo написа:
> I need to check, from a bash script, if certain database exists in a
> postgres cluster. When I issue:
>
> psql -U someuser somedatabase
>
> psql returns error code 2 regardless of 'no user' or 'no database'
> condition. How could I distinguish from the two?

A workaround: add "--list" option to the command line and grep for the
database you need.

--
Milen A. Radev


From: sundaram <sundaram(dot)bioreliance(at)gmail(dot)com>
To: pgsql-admin(at)postgresql(dot)org
Subject: Re: psql shell return codes - checking if database exists
Date: 2011-06-14 19:13:56
Message-ID: 1308078836071-4488964.post@n5.nabble.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-admin

Perhaps the grep solution will only provide an accurate response if the
database name is not a substring of some other database name.

In other words, if one were to attempt to confirm that database prod10
exists- they might execute (per the suggestion):
psql --list | grep prod10

But, the result could be misleading if the following databases also exist on
the same server:
prod100
prod101
prod1000
myprod10
yourprod101
etc.

I would like to suggest querying directly from the system table pg_database
like this:
psql --tuples-only --command "select * from pg_database where datname =
'prod10';"

You can pipe and process the result as appropriate for your needs.

--
View this message in context: http://postgresql.1045698.n5.nabble.com/psql-shell-return-codes-checking-if-database-exists-tp2088362p4488964.html
Sent from the PostgreSQL - admin mailing list archive at Nabble.com.