python查询千万级数据_Python批量删除mysql中千万级大量数据
场景描述
线上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中千万级大量数据相关推荐
- python处理千万级数据_Python批量删除mysql中千万级大量数据的脚本分享
场景描述 线上Mysql数据库里面有张表保存有每天的统计结果,每天有1千多万条,这是我们意想不到的,统计结果咋有这么多.运维找过来,磁盘占了200G,最后问了运营,可以只保留最近3天的,前面的数据,只 ...
- python mysql批量更新_Python批量删除mysql中千万级大量数据的脚本分享
场景描述 线上mysql数据库里面有张表保存有每天的统计结果,每天有1千多万条,这是我们意想不到的,统计结果咋有这么多.运维找过来,磁盘占了200G,最后问了运营,可以只保留最近3天的,前面的数据,只 ...
- python批量删除文件名_python批量删除文件名中的未知字符
python 批量删除文件名中的未知字符 如上图所示, 需要修改的文件名的个数超过 500 个, 如果一个一个的删除非常的费时间, 现 在用 python 修改很容易,方便又省时间,具体步骤如下 1 ...
- python列表去掉特定项_python实现删除列表中某个元素的3种方法
python中关于删除list中的某个元素,一般有三种方法:remove.pop.del: 1.remove: 删除单个元素,删除首个符合条件的元素,按值删除 举例说明: ? [1, 3, 4, 5, ...
- python读取excel日期和时间数据_python 在excel文件中写入date日期数据,以及读取excel日期数据,如何在python中正确显示date日期。...
如何通过python写入date数据了? 写入还是很简单的. import xlwt3 import datetime as dt workbook = xlwt.Workbook() worksh ...
- Java如何给Mysql中插入year类型数据
文章目录 Java如何给Mysql中插入year类型数据 实际问题: 解决方案: 从数据库中读取year类型数据到Java 从Java中往数据库存储year数据 Java如何给Mysql中插入year ...
- python列表中怎么去掉空值_Python 如何删除列表中的空值
今天在获取android性能CPU测试数据时,发现这么一个问题: # -*- coding:utf-8 -*- import os import time cpuInfo = os.popen(r'a ...
- 如何批量删除mysql的数据库_如何快速批量删除Mysql数据库中的数据表
一个mysql数据库中,是可以同时安装几个网站程序的,在使用中,我们只需要用不同的数据库表前缀来区分就可以了.但随着我们不断调试,那么数据 库中的表,就会一天天的多起来,如一个一个的删除就很麻烦.很辛 ...
- MyBatis使用in进行列表中数据的批量删除
MyBatis使用in 准备 使用in进行列表中数据的批量删除 准备 数据库表 bean 使用in进行列表中数据的批量删除 以删除age in (20,43,99)的数据项为例.很明显此时不可以使用# ...
最新文章
- python.freelycode.com-Python中的并行处理 -- 实例编程指南
- 万字长文 | 美团王慧文,王兴14年的带刀护卫
- three.js两个点给线条加宽度_108m2家里镶金线条,就是不一样,装出大宅范!太美了!晒晒...
- mysql for windows zip版安装
- html让a标签左右一样宽,button和a标签设置相同的css样式,但是宽度不同
- 芜湖市计算机应用能力考试,安徽省芜湖市2021年3月计算机等级考试时间
- @程序员,你真的会用 Unix 命令?
- teleport 组件的作用_对于组件的可重用性,大佬给出来6个级别的见解,一起过目一下
- oracle pl/sql发送邮件多个收件人问题
- 微信公众号支付java_微信公众号支付开发全过程(java版)
- html版权字符大全,HTML特殊字符大全
- 又有朋友被骗入传销了!
- python实现GCD算法
- Java实现仿win10计算器
- python数据分析中data_dict={h:v for h,v in zip(header,zip(header,zip(*value)}的含义
- 公司宣传片拍摄文案怎么写?
- 在建工程直接费用化_​在建工程资本化费用化区别
- 自定义UDF函数和UDTF函数
- leetcode_977
- 行政问责制度的现实问题与完善
热门文章
- SharePoint 2010中增强的错误跟踪机制
- 【Linux】ubuntu 16 启动拨号上网
- SQlite Android数据库的应用 Android SQLite 简易的学生成绩管理系统
- 服务器系统无法共享打印机驱动程序,windows-server-2003 – windows服务器共享打印机,为什么本地机器需要驱动程序?...
- Linux之fd与dup2复制fd用法
- Ubuntu18.04之星际译王及辞典
- FFmpeg之yuv旋转(十九)
- Emacs + gdb单步调试汇编代码
- android sepolicy报错解决
- python之OrderedDict