Re: I need to take metadata from a shell script. - Mailing list pgsql-general

From Greg Smith
Subject Re: I need to take metadata from a shell script.
Date
Msg-id 4BE3237F.3050707@2ndquadrant.com
Whole thread Raw
In response to Re: I need to take metadata from a shell script.  (Guillaume Lelarge <guillaume@lelarge.info>)
Responses Re: I need to take metadata from a shell script.  (Thom Brown <thombrown@gmail.com>)
List pgsql-general
Guillaume Lelarge wrote:
> And rather than checking the database name, I usually prefer to filter
> with datallowconn.
> It'll save template1 and postgres, but the script won't give me an error
> on template0.
>

Template databases are labeled as such, so this excludes both template0
and template1 without having to hardcode their names:

query="select datname from pg_database where not datistemplate"


However, if you can't connect to them, you can't dump them either!  So you really need both those things:


query="select datname from pg_database where not datistemplate and
datallowconn"
for line in `psql -At -c "$query" postgres`
do
  pg_dump -f /home/backups/`date +\%Y\%m\%d`/"$line".sql "$line"
done


It's also a good idea to use "-At" instead of just "-t" when writing
scripts that parse the output from psql, as I modified the above.  If
you look carefully you'll see that without the "-A", there is a space
before the name of each line output.  Doesn't matter in this case, but
using the default "aligned" mode can cause problems in more complicated
scripts that output more than one field.

--
Greg Smith  2ndQuadrant US  Baltimore, MD
PostgreSQL Training, Services and Support
greg@2ndQuadrant.com   www.2ndQuadrant.us


pgsql-general by date:

Previous
From: Nikola
Date:
Subject: Re: pg_class has 3615 rows and 1010Mb in table size
Next
From: Christophe Pettus
Date:
Subject: 02/09 SFPUG meeting, "Hot Standby and Streaming Replication," video now available