- 论坛徽章:
- 0
|
`<<' unmatched 怎么改正
我是这么写的呀.
下面是我的完整shell,黑体部分是出错的那行,请bjgirl和各位高手再帮我看看,谢谢!
#!/bin/ksh
if [ $# -lt 1 ]; then
echo "Usage: nad_ctl SOURCE_TYPE"
exit 1
fi
FILE_TYPE=$1
for FILE_NAME in `ls in/${FILE_TYPE}/*.txt|cut -d "." -f 1|cut -d "/" -f 3`
do
echo ${FILE_NAME}
sqlldr siebel/siebel control=./in/${FILE_TYPE}/${FILE_NAME}.ctl log=./log/${FILE_NAME}.log bad=./bad/${FILE_NAME}.bad
FLAT_FILE_NAME="./in/${FILE_TYPE}/${FILE_NAME}.txt"
LOG_FILE_NAME="./log/${FILE_NAME}.log"
if [ -e "./bad/${FILE_NAME}.bad" ]; then
BAD_FILE_NAME="./bad/${FILE_NAME}.bad"
BAD_RECDS=`cat ${BAD_FILE_NAME}|wc -l`
else
BAD_FILE_NAME="null"
BAD_RECDS=0
fi
START_DATE=`grep "Run began on" ${LOG_FILE_NAME}|awk '{print $5,$6,$7,$8}'`
END_DATE=`grep "Run ended on" ${LOG_FILE_NAME}|awk '{print $5,$6,$7,$8}'`
TOTAL_RECDS=`cat ${FLAT_FILE_NAME}|wc -l`
LOAD_RECDS=`sqlplus -s siebel/siebel<<EOF
SET TERM OFF
SET HEAD OFF
SET FEED OFF
SELECT COUNT(*) FROM NAD_${FILE_TYPE}_TMP;
EXIT;
EOF`
sqlplus -s siebel/siebel>/dev/null<<EOF
SET FEED OFF
SET HEAD OFF
SET TERM OFF
insert into nad_eventlog
(
ACTION_NAME,
ACTION_START_DATE,
ACTION_FINISH_DATE,
ACTION_OUTCOME,
FLAT_FILE_NAME,
LOG_FILE_NAME,
BAD_FILE_NAME,
NBR_OF_TOTAL_RECORDS,
NUMBER_OF_RECORDS_LOADED,
NBR_OF_REJECTED_RECORDS
)
values(
'Data Loading',
to_date('${START_DATE}','Mon dd hh24:mi:ss yyyy'),
to_date('${END_DATE}','Mon dd hh24:mi:ss yyyy'),
'LOADED',
${FLAT_FILE_NAME},
${LOG_FILE_NAME},
${BAD_FILE_NAME},
${TOTAL_RECDS},
${LOAD_RECDS},
${BAD_RECDS}
);
commit;
exit;
EOF
mv ./in/${FILE_TYPE}/${FILE_NAME}.txt ./inbak/${FILE_TYPE}/${FILE_NAME}.txt
mv ./in/${FILE_TYPE}/${FILE_NAME}.ctl ./inbak/${FILE_TYPE}/${FILE_NAME}.ctl
done |
|