blob: 2cf83c3be11380e668ff2ecd66a5cea820a55ed5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
#!/bin/sh
#
# pg_dumpall [pg_dump parameters]
# dumps all databases to standard output
# It also dumps the pg_user table
#
# to adapt to System V vs. BSD 'echo'
#set -x
if echo '\\' | grep '\\\\' >/dev/null 2>&1
then
BS='\' # BSD
else
BS='\\' # System V
fi
psql -l -A -q -t|cut -d"|" -f1-2 | tr '|' ' ' | grep -v '^template1 ' | \
while read DATABASE USER
do
echo "${BS}connect template1"
echo "create database $DATABASE;"
echo "update pg_database set datdba = $USER where datname = '$DATABASE';"
echo "${BS}connect $DATABASE"
pg_dump "$@" $DATABASE
done
echo "${BS}connect template1"
echo "copy pg_user from stdin;"
#
# Dump everyone but the postgres user
# initdb creates him
#
POSTGRES_SUPER_USER_ID="`psql -A -q -t template1 <<END
select datdba
from pg_database
where datname = 'template1';
END`"
psql -q template1 <<END
select pg_user.* into table tmp_pg_user
from pg_user
where usesysid <> $POSTGRES_SUPER_USER_ID;
copy tmp_pg_user to stdout;
drop table tmp_pg_user;
END
echo "${BS}."
|