此sh主要是針對Informix數據庫中對於多個數據庫數據文件的處理,注意其中的truncate語句,如果每個數據文件就是一個數據表,那麼truncate table ${TABLE};就可以加到database ${DATABASE}後面.
此段sh程序在RedHat Linux AS4 上測試通過,應該適應於大多數UNIX或Linux操作系統.
#!/bin/skh
if [ $# != 2 ]
then
echo "Usage : $0 dirname errlogfilename "
exit 1
fi
DIRNAME=$1
LOGFILE=$2
echo /dev/null > ${LOGFILE}
DATABASE=migdbs
LOAD( )
{
#truncate table ${TABLE};
dbaccess <<! 2>/tmp/tmp121213
database ${DATABASE};
load from ${FILENAME} insert into ${TABLE};
!
if [ $? != 0 ]
then
echo "Load table[${TABLE}] file[${FILENAME}] error." >> ${LOGFILE}
return 1;
fi
echo `cat /tmp/tmp121213 | grep "row(s) loaded"`
}
cd ${DIRNAME}
TABLELIST=`ls *.txt`
for FILENAME in $TABLELIST
{
#LEN=`echo $ii |awk '{print length( $0 )}'`
LEN=`echo ${FILENAME} |wc -c`
END=`expr ${LEN} - 10 `
TABLE=t_`echo ${FILENAME} | cut -c1-${END}`
echo 正在導入表[${TABLE}] 文件爲[${FILENAME}]
LOAD migdbs ${TABLE} ${FILENAME}
echo ""
}
if [ $# != 2 ]
then
echo "Usage : $0 dirname errlogfilename "
exit 1
fi
DIRNAME=$1
LOGFILE=$2
echo /dev/null > ${LOGFILE}
DATABASE=migdbs
LOAD( )
{
#truncate table ${TABLE};
dbaccess <<! 2>/tmp/tmp121213
database ${DATABASE};
load from ${FILENAME} insert into ${TABLE};
!
if [ $? != 0 ]
then
echo "Load table[${TABLE}] file[${FILENAME}] error." >> ${LOGFILE}
return 1;
fi
echo `cat /tmp/tmp121213 | grep "row(s) loaded"`
}
cd ${DIRNAME}
TABLELIST=`ls *.txt`
for FILENAME in $TABLELIST
{
#LEN=`echo $ii |awk '{print length( $0 )}'`
LEN=`echo ${FILENAME} |wc -c`
END=`expr ${LEN} - 10 `
TABLE=t_`echo ${FILENAME} | cut -c1-${END}`
echo 正在導入表[${TABLE}] 文件爲[${FILENAME}]
LOAD migdbs ${TABLE} ${FILENAME}
echo ""
}