DB2 ist ein Produkt der
IBM Corporation. Bitte Copyright- und Trademark-Hinweise beachten!
#!/bin/ksh
# db2look.ksh
# Raanon Reutlinger, IBM Israel, May 2000
display_syntax()
{
echo "\
SYNTAX: `basename $0` -c \"comment\" -d dbname [-p \"params\"] [-o N] [-v] [-b]
Execute db2look tool to extract database definitions into an executable script
which can be used to restore the definitions.
-c: Comment placed on first line of Summary output file (required)
-d: Database name (required)
-p: db2look parameters (default=\"${DB2LOOK_PARAMS}\")
-o: Save output in dir N under \$RESULTS
(0=Current dir,default; -1=Not Valid)
-v: Verbose (default is NOT to display db2look script)
-b: DONT save prior (old) results to bak directory (default=save)
(Not saved anyway unless -o is greater than 0)
Notes:
Value for -d is part of output filename.
"
}
# Constants
RESULTS=~/states
RESULTS_FILE=`basename $0 .ksh`
RES_EXT=".sql"
# Defaults
QUIET=1
DB_NAME=""
RESULTS_DIR=0# 0 defaults to current dir
SAVE_OLD_RESULTS=1
PARSE_ERROR=""
PARAMS=$*
DB2LOOK_PARAMS="-m -l -a -x -e -f"
# Parse parameters
while [ "$1" != "" ]
do
case "$1" in
"-c") shift; COMMENT=$1; shift;;
"-d") shift; DB_NAME=$1; shift;;
"-o") shift; RESULTS_DIR=$1; shift;;
"-v") shift; QUIET=0;;
"-b") shift; SAVE_OLD_RESULTS=0;;
*) shift; PARSE_ERROR="Invalid Param";;
esac
done
# Verify parameters
[ "$COMMENT" = "" ] && \
PARSE_ERROR="${PARSE_ERROR} -Comment is required"
[ "$DB_NAME" = "" ] && \
PARSE_ERROR="${PARSE_ERROR} -Database name is required"
[ $RESULTS_DIR -ge 0 ] 2>/dev/null || \
PARSE_ERROR="${PARSE_ERROR} -Invalid number following -o param"
if [ "$PARSE_ERROR" != "" ]
then
echo ""
echo $PARSE_ERROR
echo ""
display_syntax
exit
fi
DB_NAME=`echo $DB_NAME | tr [a-z] [A-Z]`
RES_EXT="_${DB_NAME}${RES_EXT}"
if [ $RESULTS_DIR -gt 0 ]
then
RES_OUT=${RESULTS}/${RESULTS_DIR}/${RESULTS_FILE}${RES_EXT}
RES_BAK=${RESULTS}/${RESULTS_DIR}/bak/${RESULTS_FILE}${RES_EXT}.$$
else
RES_OUT=${RESULTS_FILE}${RES_EXT}
fi
if [ $RESULTS_DIR -gt 0 ]
then
mkdir $RESULTS 2>/dev/null
mkdir $RESULTS/$RESULTS_DIR 2>/dev/null
if [ $SAVE_OLD_RESULTS -eq 1 ]
then
mkdir $RESULTS/$RESULTS_DIR/bak2>/dev/null
cp $RES_OUT $RES_BAK 2>/dev/null && echo "[Created: $RES_BAK]"
fi
fi
# BEGIN .......
[ $QUIET -eq 1 ] && Q_OUTPUT=">> $RES_OUT" || Q_OUTPUT="| tee -a $RES_OUT"
rm $RES_OUT 2>/dev/null
echo "[Creating: $RES_OUT]"
eval echo "-- $COMMENT"$Q_OUTPUT
eval echo "-- ----------------------------------------"$Q_OUTPUT
eval echo "-- Invocation: $0 $PARAMS"$Q_OUTPUT
eval echo "-- `date`"$Q_OUTPUT
eval echo "-- "$Q_OUTPUT
eval echo "-- db2look -d $DB_NAME $DB2LOOK_PARAMS"$Q_OUTPUT
eval echo "-- "$Q_OUTPUT
eval db2look -d $DB_NAME $DB2LOOK_PARAMS$Q_OUTPUT
© Gernot Ruban