#!/bin/sh
#用法:sh ./脚本名 用户名 密码 数据库实例名 表名 插入的记录数量
#参数判断
if [ $# -ne 5 ]
then
echo "Params Input Error !/n"
echo "Usage:$0 UserName PassWord InstanceName TableName InsertCount/n"
exit 1
fi
#变量定义
USERNAME=$1
PASSWORD=$2
INSTANCENAME=$3
TABLENAME=$4
INSERTCOUNT=$5
TMPFILE=TMP.TXT
SQLFILE=SQLFILE.SQL
#Connect to Oracle DB
#echo "Connect to ${INSTANCENAME}.${TABLENAME} And Get Column Info.../n"
#sqlplus -s ${USERNAME}/${PASSWORD}@${INSTANCENAME}<<!
#spool ${TMPFILE};
#desc ${TABLENAME};
#spool off;
#!
#if [ $? -ne 0 ]
#then
# echo "Connect to ${INSTANCENAME}.${TABLENAME} Error!!!/n"
# exit 1
#fi
#获取列数
lineCount=`tail +4 ${TMPFILE} | wc -l` && lineCount=`expr ${lineCount} - 2`
#获取各列的数据类型
columnTypes=`tail +4 ${TMPFILE} | nawk '{gsub("NOT"," ");gsub("NULL"," ");print $2}' | nawk -F "(" '{if (NR <= count){print
$1 }}' count=${lineCount}`
rm ${TMPFILE}
#构造数据
echo "Creating data ... /n"
i=0
while [ $i -lt ${INSERTCOUNT} ]
do
sqlCmd="insert into ${TABLENAME} values("
tmpCount=0
for type in ${columnTypes}
do
case ${type} in
"NUMBER")
data=$i
;;
"VARCHAR2")
data="'$i'"
;;
*)
data=""
;;
esac
sqlCmd="${sqlCmd} $data"
tmpCount=`expr $tmpCount + 1`
if [ $tmpCount -ne $lineCount ]
then
sqlCmd="${sqlCmd},"
fi
done
sqlCmd="${sqlCmd});"
echo ${sqlCmd} >> ${SQLFILE}
i=`expr $i + 1`
done
#把数据插入数据库
echo "Inserting data.../n"
#sqlplus -s ${USERNAME}/${PASSWORD}@${INSTANCENAME}<<! @${SQLFILE}; !
#if [ $? -ne 0 ]
#then
# echo "Insert Data to ${INSTANCENAME}.${TABLENAME} Error!!!/n"
# exit 1
#fi
#rm ${SQLFILE}
echo "Success Done/n"