用户登录
用户注册

分享至

postgresql脚本

  • 作者: 晓风残月4489286
  • 来源: 51数据库
  • 2020-09-27
主要就是把除了template0和template1外的数据库全部dump到指定目录并打包
使用前把BACKUPDIR修改至你自己的备份目录
一般来说你不用修改DUMPCMD,除非你的PostgreSQL安装时的prefix指定到了其他地方,又或者你想加上其他的pg_dump参数
可以放在crontab里每天定时执行
可以考虑root来执行,因为一般root可以不通过密码验证直接使用数据库pgsql用户dump数据,一切都取决于你的pg_hba.conf和postgresql.conf设置,碰到问题自行判断
想在Windows上运行需要自行稍微修改

#! /bin/sh

DATE=`date +%Y%m%d%H`
BACKUPDIR=/path/to/backup
DUMPCMD='/usr/local/bin/pg_dump -U pgsql -O -x'

if [ ! -d $BACKUPDIR ]; then
mkdir $BACKUPDIR
fi

for DB in `/usr/local/bin/psql -U pgsql -d template1 -c '\l' -q -t | /usr/bin/awk '{print $1}'`
do
FILENAME=${DATE}_${DB}
if [ $DB != 'template0' ] && [ $DB != 'template1' ]; then
echo "Backup $DB ..."
$DUMPCMD -f $BACKUPDIR/$FILENAME.sql $DB
/usr/bin/tar -C $BACKUPDIR -c -j -f $BACKUPDIR/$FILENAME.tar.bz2 $FILENAME.sql \
&& rm -f $BACKUPDIR/$FILENAME.sql
fi
done
sync



  两种方法:
方法一:查询pg_proc:

osdba=# select prosrc from pg_proc where proname='get_username';
prosrc
--------------------------------------------------------

declare
ret text;

begin
select name into ret from tang01 where id=userid;
return ret;

end;

(1 row)

方法二:调用pg_catalog.pg_get_functiondef函数:
osdba=# select pg_get_functiondef('get_username'::regproc);
pg_get_functiondef
----------------------------------------------------------------

create or replace function public.get_username(userid integer)
returns text
language plpgsql

as $function$

declare
ret text;

begin
select name into ret from tang01 where id=userid;
return ret;

end;

$function$
软件
前端设计
程序设计
Java相关