Skip to content

Instantly share code, notes, and snippets.

@brock
Created July 20, 2015 21:02
Show Gist options
  • Save brock/5c513332f3f55e9dbd28 to your computer and use it in GitHub Desktop.
Save brock/5c513332f3f55e9dbd28 to your computer and use it in GitHub Desktop.
Extract a single database from a the pg_dumpall archive
#!/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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment