#!/bin/sh

# This script deletes tables from a PostgreSQL pg_dump plain
# text dump.  This is useful for getting smaller backups.
#
# Usage: getridof.sh <backup bzip> <table name>


# Check requirements




echo "This is a beta release use it at your own risc. If you want to use this script first you must edit variuables then comment out this line."; exit

requirements="egrep grep sed awk"

for req in $requirements
    do
        if [ -z "`type -p $req`" ] ; then
            echo "Requirement $req is not found. Exiting..."
            exit 1
        fi
    done

tables="usr|x3d"
    
# Check that arguments are given    
    if [ "$1" = "" ]; then
        echo "Error: no backup file given"
        exit
    fi

# Extract the backup to a working SQL script
cp "$1" ${1}_to_norm.sql.gz
gunzip < ${1}_to_norm.sql.gz > working.sql

#array=($(egrep '^(usr|x3d)' < working.sql))

array=($(egrep '^($tables)' < working.sql))
    for table in ${array[@]}
    do
# Find the line before the table's COPY output begins
        START=`grep -n "^COPY $table " working.sql | sed -e 's/:.*//'`
        ((START--))
#Find line number at which COPY ends
#Trying to use awk
        END=`grep -n "^\\\\\\." working.sql | awk -v START=$START '{if ($1 > START) print $1}' | sed -e 's/:.*//' | head -1`
        ((END++))
# Remove all contents of the working file containing the COPY command
        sed -i -e $START,$END d working.sql
    done


# Rename the working file to the table name
mv working.sql "${1}_normalized.sql"
gzip "${1}_normalized.sql" > "${1}_normalized.sql.gz"


# Remove temporary file
rm working.sql-e
rm ${1}_to_norm.sql.gz