sh 从pg_dumpall存档中提取单个数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sh 从pg_dumpall存档中提取单个数据库相关的知识,希望对你有一定的参考价值。

#!/bin/bash

START=0
END=0

if [ $# -ne 2 ]
then
    echo "Usage: $0 <postgresql sql dump> <db_name>" >&2
        exit 1
fi

DB_FILE=$1
DB_NAME=$2

if [ ! -f $DB_FILE -o ! -r $DB_FILE ]
then
        echo "error: $DB_FILE not found or not readable" >&2
        exit 2
fi

while read LINE
do
        LINE_NUMBER=`echo $LINE | cut -d: -f1`

        if [ $START -eq 0 ]
        then
                START=$(($LINE_NUMBER+1))
        else
                END=$(($LINE_NUMBER+1))
        fi
done < <(egrep -n "\\connect\ |PostgreSQL\ database\ dump\ complete" $DB_FILE | grep -m 1 -A 1 "$DB_NAME")

if [ $START -eq 0 -o $END -eq 0 ]
then
        echo "error: start or end not found" >&2
        exit 3
fi

DB_LENGTH=`expr $END - $START`

head -$END $DB_FILE | tail -$DB_LENGTH

以上是关于sh 从pg_dumpall存档中提取单个数据库的主要内容,如果未能解决你的问题,请参考以下文章

从 zip 存档中提取单个文件

使用 Perl 从巨大的存档中提取单个

D:如何从存档中提取数据?

快速从存档中提取所选文件

从python中的tar存档中提取压缩的gz文件

如何使用 Sharpcompress .net 从 ZIP 存档中删除单个条目