扣丁学堂Linux培训之shell脚本操作mysql数据库删除重复的数据

zealfish 2019-03-15

今天扣丁学堂Linux培训老师给大家介绍一下关于shell脚本操作mysql数据库删除重复数据的详细介绍,首先由于之前的业务,造成数据库上产生了脏数据,写个脚本删除重复的数据。由于是开发测试环境,所以选择任意删除相同uid中的一条。由于每次执行只删除重复数据的一条,需要重复执行,如果本轮没有数据被删就OK。

扣丁学堂Linux培训之shell脚本操作mysql数据库删除重复的数据

Linux培训

#!/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开发技术的小伙伴快快行动吧。

相关推荐