shell-escape in sql possible ?
Posted in 1992
Path: emory!wupost!darwin.sura.net!Sirius.dfn.de!fauern!unido!sbsvax!ukh840!becker
From: becker@ukh840.med-in.uni-sb.de
Newsgroups: comp.databases.informix
Message-ID: <15830@sbsvax.cs.uni-sb.de>
Date: 27 Jan 92 08:13:50 GMT
Sender: news@sbsvax.cs.uni-sb.de
Sirs,
I'm using an automaticly generated list of sql-statements for
archiving my databases (Informix ONLINE). Since tbtape can only
restore the whole system, with my shell-procedure, I run every
night my "dbsave"-program. Unfortunately my disk-space runs out
of limits, so sometimes this procedure aborts.
Now is there a possibility of including shell escapes into a
list of sql-statements? I think the way to split my sql procedure
into many procedures with other commands between them is possible
but not beautiful. Do You know any other way?
Thanks
Dieter Becker
PS.: Enclosed You find my dbsave - program. You don't need to read it.
Comments are in german.
###########################################################
#Reorganisation der Datenbank und ASCII-Sicherung
# - wird von cron aufgerufen
#der erste Parameter ist der Name der Datenbank
datbank=$1
if [ "x$1" = "x" ]
then
echo "Aufruf $0 datenbank"
exit
fi
export datbank
(
#Setzen der benoetigten Shell-Variablen - wird von CRON nicht erledigt
. /usr2/becker/bin/db.setenv
# Datenbanksicherung
# Alle Tabellen der Datenbank werden entladen
echo "SICHERUNG DER DATENBANK $datbank IN ASCII-FORMAT
Trennzeichen = >$DBDELIMITER<
"
sichdir=/usr3/dbsicherung
sichdat=$sichdir/$datbank/`date +%h%d`
sdtar=$datbank.tar
#alle Sicherungen auf dem aktuellen Rechner loeschen
rm -rf /usr3/dbsicherung/$datbank >/dev/null 2>&1
(cd $sichdir; rm -f $sichdat $sdtar $sdtar.Z 2>&1 >/dev/null)
mkdir /usr3/dbsicherung/$datbank
echo "Beginn der Sicherung: `date` "
#wenn Directory schon vorhanden - loeschen
if [ -d $sichdat ]
then
rm -rf $sichdat >/dev/null 2>&1
fi
mkdir $sichdat
cd $sichdat
dbschema -t all -s all -p all -d $datbank $datbank.unl.sql
echo 'unload to "h1.unl" select tabname from systables' >h1.sql
isql -s $datbank h1 >/dev/null 2>&1
/usr/bin/local/replace $DBDELIMITER '' h1.unl 2>&1 >/dev/null
awk '{printf ("load from %s.unl insert into %s;\\n", $0, $0);}' h1.unl>hload.sql&
awk '{printf ("unload to %s.unl select * from %s;\\n", $0, $0);}' h1.unl >h1.sql
isql -s $datbank h1 >/dev/null 2>&1
rsh ukh559 rm -rf dbsich.$datbank.3
rsh ukh559 mv dbsich.$datbank.2 dbsich.$datbank.3
rsh ukh559 mv dbsich.$datbank.1 dbsich.$datbank.2
cd $sichdir
/usr/local/bin/gtar cvf - $datbank | \\
/usr/local/bin/compress -c > /ukh559.usr1/becker/dbsich.$datbank.1
echo "Datenuebertragung auf Rechner ukhom"
ftp -v -i -n ukhom <<EOF
user -----deleted----------
binary
hash
del $sdtar.Z
ldir /ukh559.usr1/becker/dbsich.$datbank.1
put /ukh559.usr1/becker/dbsich.$datbank.1 $sdtar.Z
dir $sdtar.Z
bye
EOF
echo "Ende der Datenuebertragung: `date`"
rm -rf $sdtar $sdtar.Z /usr3/dbsicherung/$datbank >/dev/null 2>&1
) 2>&1 >/dev/null
###################ENDE####################
--
Dr. med. dipl.-math Dieter Becker Tel.: (0 / +49) 6841 - 16 3046
Medizinische Universitaets- und Poliklinik Fax.: (0 / +49) 6841 - 16 3369
Innere Medizin III
D - 6650 Homburg / Saar Email: becker@med-in.uni-sb.de