欢迎来到代码驿站!

Shell

当前位置:首页 > 脚本语言 > Shell

shell脚本操作mysql数据库删除重复的数据

时间:2021-01-17 14:08:07|栏目:Shell|点击:

由于之前的业务,造成数据库上产生了脏数据,写个脚本删除重复的数据。由于是开发测试环境,所以选择任意删除相同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

总结

上一篇:shell 递归遍历目录下的所有文件并统一改名的方法

栏    目:Shell

下一篇:shell脚本测试某网段内主机连通性

本文标题:shell脚本操作mysql数据库删除重复的数据

本文地址:http://www.codeinn.net/misctech/46634.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有