一个删除MySQL大表数据的shell脚本

#!/bin/bash
#为了删除一些特别大的表
dbname=''  #库名
tabname=''  #表名
step='10000' #删除步长
sleeptime=1  #睡眠时间
start_index=30000001  #开始行
end_index=39938589   #结束行
#为了防止误执行,把密码删除,用的时候再加
MYSQL="mysql -uroot -p -t -e "

i_start=$start_index
i_end=$(expr "$start_index" + "$step")
i_end=$(expr "$i_end" - 1)
if [ $i_end -gt $end_index ]; then
  i_end=$end_index
fi
while [ $i_end -le $end_index ]; do
    echo "start delete from $i_start to $i_end"
    #mysql delete delete from yitain where id >= $i_start and id <= $i_end
    #$MYSQL "delete from $dbname.$tabname where id >= $i_start and id <= $i_end;"
    i_start=$(expr "$i_end" + 1)
    i_end=$(expr "$i_end" + "$step")
    if [ $i_start -gt $end_index ]; then
        break
    fi
    if [ $i_end -gt $end_index ]; then
      i_end=$end_index
    fi
    sleep $sleeptime
done

原创文章,作者:tars,如若转载,请注明出处:http://www.178linux.com/6308