今天扣丁学堂Linux培训老师给大家介绍一下关于shell脚本操作mysql数据库删除重复数据的详细介绍,首先由于之前的业务,造成数据库上产生了脏数据,写个脚本删除重复的数据。由于是开发测试环境,所以选择任意删除相同uid中的一条。由于每次执行只删除重复数据的一条,需要重复执行,如果本轮没有数据被删就OK。
#!/bin/sh
# delete all company's duplicate uid
MYSQL_BIN_PATH=/data/mysql/server/mysql_3306/bin
MYSQL_SOCK_PATH=/data/mysql/server/mysql_3306/tmp
DBUSER=dbuser
DBPWD=userpwd
DBHOSTNAME=192.168.1.105
PORT=3306
# get all company_id
for company_id in `${MYSQL_BIN_PATH}/mysql -u${DBUSER} -p${DBPWD} -h ${DBHOSTNAME} -P ${PORT} --socket=${MYSQL_SOCK_PATH}/mysql.sock -e "
SELECT company_id FROM company.companypage;"`
do
if [ $company_id != "company_id" ] ; then
# if [ $company_id -eq 2733 ] ; then
suffix=`expr ${company_id} % 100`
for user_id in `${MYSQL_BIN_PATH}/mysql -u${DBUSER} -p${DBPWD} -h ${DBHOSTNAME} -P ${PORT} --socket=${MYSQL_SOCK_PATH}/mysql.sock -e "
SELECT user_id FROM company.company_candidate_${suffix} WHERE company_id=${company_id} AND user_id>0 GROUP BY company_id, user_id HAVING COUNT(user_id) > 1;"`
do
if [ $user_id != "user_id" ] ; then
${MYSQL_BIN_PATH}/mysql -u${DBUSER} -p${DBPWD} -h ${DBHOSTNAME} -P ${PORT} --socket=${MYSQL_SOCK_PATH}/mysql.sock -e "
DELETE FROM company.company_candidate_${suffix} WHERE company_id=${company_id} and user_id=${user_id} limit 1;"
echo "delete from company_candidate_${suffix} where company_id=${company_id} and user_id=${user_id} limit 1"
fi
done
# fi
fi
done
exit 0
以上就是关于扣丁学堂Linux培训之shell脚本操作mysql数据库删除重复的数据的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值。
想要学好Linux开发小编给大家推荐口碑良好的扣丁学堂,扣丁学堂有专业老师制定的Linux学习路线图辅助学员学习,此外还有与时俱进的Linux视频教程供大家学习,想要学好Linux开发技术的小伙伴快快行动吧。
有疑问加站长微信联系(非本文作者)