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

 更新时间:2019年03月15日 11:28:50   作者:Scub  
今天小编就为大家分享一篇关于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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • shell脚本无密码登录 expect的使用方法详解

    shell脚本无密码登录 expect的使用方法详解

    这篇文章主要介绍了shell脚本无密码登录 expect的使用方法详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-10-10
  • linux系统下用.sh文件执行python命令的方法

    linux系统下用.sh文件执行python命令的方法

    这篇文章主要给大家介绍了关于linux系统下用.sh文件执行python命令的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友可以参考下
    2022-07-07
  • linux下shell脚本备份文件的方法实现

    linux下shell脚本备份文件的方法实现

    本文主要介绍了linux下shell脚本备份文件的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Linux base shell重定向详解

    Linux base shell重定向详解

    这篇文章主要介绍了Linux base shell重定向的相关资料,并用一个简明例子总结了常见用法(在第三节),需要的朋友可以参考下
    2014-04-04
  • linux中ps -ef和ps -aux的区别

    linux中ps -ef和ps -aux的区别

    ps -ef和ps -aux均为Linux中的ps命令,是Process Status的缩写,ps命令用来列出系统中当前运行的那些进程,这篇文章主要介绍了linux中ps -ef和ps -aux的区别,需要的朋友可以参考下
    2023-10-10
  • shell实现SSH自动登陆的方法示例

    shell实现SSH自动登陆的方法示例

    这篇文章主要介绍了shell实现SSH自动登陆的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Linux重命名文件和文件夹的两种方法

    Linux重命名文件和文件夹的两种方法

    这篇文章主要介绍了Linux重命名文件和文件夹的两种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-12-12
  • shell获取目录下所有文件夹的名称并输出的实例

    shell获取目录下所有文件夹的名称并输出的实例

    今天小编就为大家分享一篇shell获取目录下所有文件夹的名称并输出的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • 很实用的Linux 系统运维常用命令及常识(超实用)

    很实用的Linux 系统运维常用命令及常识(超实用)

    作为Linux运维,需要了解Linux操作系统的基本使用和管理知识,下面脚本之家小编给大家介绍下Linux运维需要掌握的命令,想成为Linux运维的朋友可以来学习一下
    2016-10-10
  • bash脚本中-e、&和&&的使用

    bash脚本中-e、&和&&的使用

    bash脚本里面经常会看到-e、&和&&,你知道它的用法吗,本文主要介绍了bash脚本中-e、&和&&的使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02

最新评论