场景描述

线上mysql数据库里面有张表保存有每天的统计结果,每天有1千多万条,这是我们意想不到的,统计结果咋有这么多。运维找过来,磁盘占了200g,最后问了运营,可以只保留最近3天的,前面的数据,只能删了。删,怎么删?

因为这是线上数据库,里面存放有很多其它数据表,如果直接删除这张表的数据,肯定不行,可能会对其它表有影响。尝试每次只删除一天的数据,还是卡顿的厉害,没办法,写个python脚本批量删除吧。

具体思路是:

每次只删除一天的数据;

删除一天的数据,每次删除50000条;

一天的数据删除完,开始删除下一天的数据;

python代码

# -*-coding:utf-8 -*-

import sys

# 这是我们内部封装的python module

sys.path.append('/var/lib/hadoop-hdfs/scripts/python_module2')

import keguang.commons as commons

import keguang.timedef as timedef

import keguang.sql.mysqlclient as mysql

def run(starttime, endtime, regx):

tb_name = 'statistic_ad_image_final_count'

days = timedef.getdays(starttime,endtime,regx)

# 遍历删除所有天的数据

for day in days:

print '%s 数据删除开始'%(day)

mclient = getconn()

sql = '''

select 1 from %s where date = '%s' limit 1

'''%(tb_name, day)

print sql

result = mclient.query(sql)

# 如果查询到了这一天的数据,继续删除

while result is not ():

sql = 'delete from %s where date = "%s" limit 50000'%(tb_name, day)

print sql

mclient.execute(sql)

sql = '''

select 1 from %s where date = '%s' limit 1

'''%(tb_name, day)

print sql

result = mclient.query(sql)

print '%s 数据删除完成'%(day)

mclient.close()

# 返回mysql 连接

def getconn():

return mysql.mysqlclient(host = '0.0.0.0', user = 'test', passwd = 'test', db= 'statistic')

if __name__ == '__main__':

regx = '%y-%m-%d'

yesday = timedef.getyes(regx, -1)

starttime = '2019-08-17'

endtime ='2019-08-30'

run(starttime, endtime, regx)

循环判断数据,如果有,继续删除当天50000条数据;否则,开始删除下一天的数据。花了半个小时,终于删除完了。

欢迎关注我的微信公众号

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

python查询千万级数据_Python批量删除mysql中千万级大量数据相关推荐

  1. python处理千万级数据_Python批量删除mysql中千万级大量数据的脚本分享

    场景描述 线上Mysql数据库里面有张表保存有每天的统计结果,每天有1千多万条,这是我们意想不到的,统计结果咋有这么多.运维找过来,磁盘占了200G,最后问了运营,可以只保留最近3天的,前面的数据,只 ...

  2. python mysql批量更新_Python批量删除mysql中千万级大量数据的脚本分享

    场景描述 线上mysql数据库里面有张表保存有每天的统计结果,每天有1千多万条,这是我们意想不到的,统计结果咋有这么多.运维找过来,磁盘占了200G,最后问了运营,可以只保留最近3天的,前面的数据,只 ...

  3. python批量删除文件名_python批量删除文件名中的未知字符

    python 批量删除文件名中的未知字符 如上图所示, 需要修改的文件名的个数超过 500 个, 如果一个一个的删除非常的费时间, 现 在用 python 修改很容易,方便又省时间,具体步骤如下 1 ...

  4. python列表去掉特定项_python实现删除列表中某个元素的3种方法

    python中关于删除list中的某个元素,一般有三种方法:remove.pop.del: 1.remove: 删除单个元素,删除首个符合条件的元素,按值删除 举例说明: ? [1, 3, 4, 5, ...

  5. python读取excel日期和时间数据_python 在excel文件中写入date日期数据,以及读取excel日期数据,如何在python中正确显示date日期。...

    如何通过python写入date数据了? 写入还是很简单的. import xlwt3 import  datetime as dt workbook = xlwt.Workbook() worksh ...

  6. Java如何给Mysql中插入year类型数据

    文章目录 Java如何给Mysql中插入year类型数据 实际问题: 解决方案: 从数据库中读取year类型数据到Java 从Java中往数据库存储year数据 Java如何给Mysql中插入year ...

  7. python列表中怎么去掉空值_Python 如何删除列表中的空值

    今天在获取android性能CPU测试数据时,发现这么一个问题: # -*- coding:utf-8 -*- import os import time cpuInfo = os.popen(r'a ...

  8. 如何批量删除mysql的数据库_如何快速批量删除Mysql数据库中的数据表

    一个mysql数据库中,是可以同时安装几个网站程序的,在使用中,我们只需要用不同的数据库表前缀来区分就可以了.但随着我们不断调试,那么数据 库中的表,就会一天天的多起来,如一个一个的删除就很麻烦.很辛 ...

  9. MyBatis使用in进行列表中数据的批量删除

    MyBatis使用in 准备 使用in进行列表中数据的批量删除 准备 数据库表 bean 使用in进行列表中数据的批量删除 以删除age in (20,43,99)的数据项为例.很明显此时不可以使用# ...

最新文章

  1. python.freelycode.com-Python中的并行处理 -- 实例编程指南
  2. 万字长文 | 美团王慧文,王兴14年的带刀护卫
  3. three.js两个点给线条加宽度_108m2家里镶金线条,就是不一样,装出大宅范!太美了!晒晒...
  4. mysql for windows zip版安装
  5. html让a标签左右一样宽,button和a标签设置相同的css样式,但是宽度不同
  6. 芜湖市计算机应用能力考试,安徽省芜湖市2021年3月计算机等级考试时间
  7. @程序员,你真的会用 Unix 命令?
  8. teleport 组件的作用_对于组件的可重用性,大佬给出来6个级别的见解,一起过目一下
  9. oracle pl/sql发送邮件多个收件人问题
  10. 微信公众号支付java_微信公众号支付开发全过程(java版)
  11. html版权字符大全,HTML特殊字符大全
  12. 又有朋友被骗入传销了!
  13. python实现GCD算法
  14. Java实现仿win10计算器
  15. python数据分析中data_dict={h:v for h,v in zip(header,zip(header,zip(*value)}的含义
  16. 公司宣传片拍摄文案怎么写?
  17. 在建工程直接费用化_​在建工程资本化费用化区别
  18. 自定义UDF函数和UDTF函数
  19. leetcode_977
  20. 行政问责制度的现实问题与完善

热门文章

  1. SharePoint 2010中增强的错误跟踪机制
  2. 【Linux】ubuntu 16 启动拨号上网
  3. SQlite Android数据库的应用 Android SQLite 简易的学生成绩管理系统
  4. 服务器系统无法共享打印机驱动程序,windows-server-2003 – windows服务器共享打印机,为什么本地机器需要驱动程序?...
  5. Linux之fd与dup2复制fd用法
  6. Ubuntu18.04之星际译王及辞典
  7. FFmpeg之yuv旋转(十九)
  8. Emacs + gdb单步调试汇编代码
  9. android sepolicy报错解决
  10. python之OrderedDict