Я пытаюсь создать сценарий BTEQ , в котором он должен отправлять почту в формате таблицы, таком как TableName, Curent_Date_Loaded и No.of Records Loaded.
У меня twoтаблицы и я ищу результат, например, когда первый запрос BTEQ выполняется и не получает значений (строк), он должен выполняться в следующем запросе, но главное, я хочу только таблицу , которая не получает никаких значений должен выполняться на втором запросе.Если таблица не извлекает какие-либо значения (строки) даже во втором запросе, необходимо сгенерировать сообщение типа " Сегодня таблица не была загружена " с использованием команды Отправить письмо в сценариях
tablecollist.txt содержит
ABC | Load_Date
DEF | Load_Date
В моем случае обе таблицы загружаются в обоих запросах.необходимо.
#! /bin/sh
set -vx
optfile="/home/scripts/opt.txt"
[[ -f $optfile ]] && rm $optfile
dbcred="******,******"
touch $optfile
for i in `cat tablecollist.txt`
do
tbl=`echo $i|awk -F '|' '{print $1}'`
col=`echo $i|awk -F '|' '{print $2}'`
done
/usr/bin/bteq << EOF
.LOGON abc${hostsuffix}.xyz.yzx.com/$dbcred;
.SET SEPARATOR '|'
.SET TITLEDASHES OFF;
.SET NULL AS ''
.EXPORT REPORT FILE=$optfile
.SET QUIET ON;
DATABASE par_yzx_db;
sel '$tbl' as tablename, cast($col as date) as Load_Date,count(*)
from $tbl where $col=cast(current_date as date format 'dd-mm-yyyy')
group by cast ($col as date);
.IF ACTIVITYCOUNT =0 THEN .GOTO DoQuery2;
.LABEL DoQuery2;
sel '$tbl' as tablename, cast($col as date) as load_date, count(*) from
$tbl where cast($col as date) = current_date-1 group by load_date;
GOTO End;
.LABEL End;
IF ERRORCODE > 0 THEN .QUIT 10;
.LOGOFF;
.EXIT
EOF
done
cdate=`date +'%F'`
sed -i -e '/tablename/d' $optfile
if [[ -s $optfile ]] ; then
SUBJECT=`echo "Important Tables yzx status: $cdate"`
/usr/bin/awk -F"|" -v SUBJECT="Subject: ${SUBJECT}" 'BEGIN {
print "From: abc@xyz.com"
print "To: 123@xyz.com"
print "MIME-Version: 1.0"
print "Content-Type: text/html"
print SUBJECT
print "<html><body><table border=1 cellspacing=0 cellpadding=3 style=font-family:Calibri;>"
print "<tr>"
print "<td>Table_Name</td>";
print "<td>Load Date</td>";
print "<td>Count</td>";
print "</tr>"
} {
print "<tr>"
print "<td>"$1"</td>";
print "<td>"$2"</td>";
print "<td>"$3"</td>";
print "</tr>"
} END {
print " </table></body></html>"
} ' $optfile | /usr/sbin/sendmail -t
fi
Ожидаемый результат:
**Table_Name Load Date Count**
ABC 19/07/08 46
DEF 19/07/06 85
Фактический результат:
**Table_Name Load Date Count**
ABC 19/07/08 46
ABC 19/07/08 46
DEF 19/07/06 85