自动生成数据shell脚本

#!/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"

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值