pg_dumpall

来自「关系型数据库 Postgresql 6.5.2」· 代码 · 共 74 行

TXT
74
字号
#!/bin/sh## pg_dumpall [pg_dump parameters]# dumps all databases to standard output# It also dumps the pg_shadow table## to adapt to System V vs. BSD 'echo'#set -xif echo '\\' | grep '\\\\' >/dev/null 2>&1then		BS='\'			# BSDelse	BS='\\'			# System Vfi## Dump everyone but the postgres user# initdb creates him## get the postgres user id#POSTGRES_SUPER_USER_ID="`echo \" \			select datdba \			from pg_database \			where datname = 'template1'; \" | \			psql -A -q -t template1`"echo "${BS}connect template1"## delete all users in case they run this twice## we don't use POSTGRES_SUPER_USER_ID because the postgres super user id# could be different on the two installations#echo "select datdba into table tmp_pg_shadow \      from pg_database where datname = 'template1';"echo "delete from pg_shadow where usesysid <> tmp_pg_shadow.datdba;"echo "drop table tmp_pg_shadow;"## load all the non-postgres users#echo "copy pg_shadow from stdin;"psql -q template1 <<ENDselect pg_shadow.* into table tmp_pg_shadowfrom pg_shadowwhere usesysid <> $POSTGRES_SUPER_USER_ID;copy tmp_pg_shadow to stdout;drop table tmp_pg_shadow;ENDecho "${BS}."psql -l -A -q -t| tr '|' ' ' | grep -v '^template1 ' | \while read DATABASE DBUSERID ENCODING DATAPATHdo	POSTGRES_USER="`echo \" \		select usename \		from pg_shadow \		where usesysid = $DBUSERID; \" | \		psql -A -q -t template1`"	echo "${BS}connect template1 $POSTGRES_USER"	if createdb -help|grep encoding >/dev/null	then		echo "create database $DATABASE with encoding='`pg_encoding $ENCODING`';"	else		echo "create database $DATABASE;"	fi	echo "${BS}connect $DATABASE $POSTGRES_USER"	pg_dump ${1+"$@"} $DATABASE	if [ "$?" -ne 0 ]	then	echo "pg_dump failed on $DATABASE, exiting" 1>&2		exit 1	fidone

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?