#!/usr/bin/env python
# encoding: utf-8 #@author: 东哥加油!
#@file: del_tb_bigtable_statistic.py
#@time: 2018/11/21 15:39 import pymysql
import datetime
import math
import time #获取连接
def get_conn():
conn = None
try:
conn = pymysql.connect(
host="192.168.1.2",
port=3306,
user="root",
passwd="mysqlpassword",
charset="utf8",
)
except Exception as err:
print(err)
return conn #查询语句执行
def get_data(sql):
conn = get_conn()
cur = conn.cursor()
cur.execute(sql)
data = cur.fetchall()
conn.close()
return data #93天前的时间戳
# 2018-07-24 00:00:00 转成毫秒时间戳
def get_pdate_begin(xday):
now_time = datetime.datetime.now()
step_time = datetime.timedelta(days=xday)
yes_time = now_time - step_time
pdate = yes_time.strftime('%Y%m%d')
print(pdate)
return pdate #数据备份,放到tb_bigtable_statistic_hist表中
def data_bak(xday):
print("开始时间:",time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
conn = get_conn()
cur = conn.cursor()
cidlist = data_zk(xday)
if cidlist == 0:
print('当天无数据')
else:
for cids in cidlist:
try:
sql = '''insert into db_order.tb_bigtable_statistic_hist \
select * from db_order.tb_bigtable_statistic \
where cid in( %s )''' % cids
cur.execute(sql)
conn.commit() except:
print('备份失败!!!')
conn.rollback()
conn.close()
exit(99)
conn.close()
print("结束时间:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) #组装cid成in的条件(....),5000个cid为一组
def data_zk(xday):
conn = get_conn()
cur = conn.cursor()
cid = get_cid(xday)
var1 = "-999"
i = 0
list = []
if cid.__len__() > 0:
for one in cid:
var1=var1+","+str(one[0])
i=i+1
if(i==2000):
list.append(var1)
var1 = "-999"
i=0
list.append(var1)
return list
else:
return 0 #获取该条件所有的cid
def get_cid(xday):
pdate = get_pdate_begin(xday)
sql = '''SELECT cid
FROM db_order.tb_bigtable_statistic
WHERE pdate = %s limit 20000''' % (pdate)
cid = get_data(sql)
return cid #删除数据
def del_data(xday):
print("删除开始时间:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
conn = get_conn()
cur = conn.cursor()
cidlist = data_zk(xday)
if cidlist == 0:
print('当天无数据')
else:
for cids in cidlist:
try:
sql = '''delete from db_order.tb_bigtable_statistic \
where cid in( %s )''' % cids
cur.execute(sql)
conn.commit() except:
print('备份失败!!!')
conn.rollback()
conn.close()
exit(99)
conn.close()
print("删除结束时间:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) def move_data(xday):
data_bak(xday)
del_data(xday) if __name__ == '__main__':
move_data(93)

  

python 删除大表数据的更多相关文章

  1. 分批次删除大表数据的shell脚本

    #!/bin/bash # 分别是主机名,端口,用户,密码,数据库,表名称,字段名称 readonly HOST="XXX" readonly PORT=" readon ...

  2. db2快速删除大表数据(亲测可用)

    一.推荐.删了不可恢复 TRUNCATE TABLE table_name IMMEDIATE 二. DB2 LOAD FROM d:\DB2_BAK\null.del of del REPLACE ...

  3. 【MySQL】删除大表的讨论【转】

    转自http://tech.ddvip.com/2013-07/1373269453198566.html 微博上讨论MySQL在删除大表engine=innodb(30G+)时,如何减少MySQL ...

  4. mysql删除大表更快的drop table办法

    mysql删除大表更快的drop table办法 参考资料:https://blog.csdn.net/anzhen0429/article/details/76284320 利用硬链接和trunca ...

  5. MySQL 硬链接删除大表

    在清理整个大表时,我们推荐使用drop,而非delete.但是如果表实在太大,即使是drop,也需要消耗一定的时间.这时可以利用linux的硬连接来快速删除大表,操作过程如下:有一个大表test,共有 ...

  6. 工作随笔——mysql子查询删除原表数据

    最近在开发的时候遇到一个mysql的子查询删除原表数据的问题.在网上也看了很多方法,基本也是然并卵(不是写的太乱就是效率太慢). 公司DBA给了一个很好的解决方案,让人耳目一新. DELETE fb. ...

  7. MYSQL中delete删除多表数据

    MYSQL中delete删除多表数据 DELETE删除多表数据,怎样才能同时删除多个关联表的数据呢?这里做了深入的解释: 1. delete from t1 where 条件 2.delete t1 ...

  8. MySQL 存储过程删除大表

    1.权限问题 alter routine 编辑或删除存储过程 create routine 建立存储过程 execute 创建存储过程 2.存储过程相关的一些命令 show procedure sta ...

  9. sqlserver快速删除整个表数据

    --删除整个表数据 SET STATISTICS TIME ON; DECLARE @Timer DATETIME = GETDATE(); TRUNCATE TABLE LOG_DEBUG_ERRO ...

随机推荐

  1. 学习Mahout(三)

    开发+运行第一个Mahout的程序 代码: /** * Licensed to the Apache Software Foundation (ASF) under one or more * con ...

  2. 再回首数据结构—AVL树(二)

    前面主要介绍了AVL的基本概念与结构,下面开始详细介绍AVL的实现细节: AVL树实现的关键点 AVL树与二叉搜索树结构类似,但又有些细微的区别,从上面AVL树的介绍我们知道它需要维护其左右节点平衡, ...

  3. PostgreSQL-11-WITH语句

    1.WITH语句原理:通用表表达式(Common Table Expressions)/CTEs,在大型查询中的辅助语句 WITH name_for_summary_data AS ( SELECT ...

  4. [題解]TYVJ_2032(搜索/最短路)

    搜索:https://www.cnblogs.com/SiriusRen/p/6532506.html?tdsourcetag=s_pctim_aiomsg 來自 SiriusRen 數據範圍小,考慮 ...

  5. Solr查询中涉及到的Cache使用及相关的实现【转】

    转自:http://www.cnblogs.com/phinecos/archive/2012/05/24/2517018.html 本文将介绍Solr查询中涉及到的Cache使用及相关的实现.Sol ...

  6. Azkaban的架构(三)

    Azkaban是什么?(一) Azkaban的功能特点(二) 不多说,直接上干货! http://www.cnblogs.com/zlslch/category/938837.html Azkaban ...

  7. mybatis(错误) 项目启动时报“Result Maps collection already contains value forxxx”的解决方案

    使用逆向工程生成代码时,一定要将原来的代码删除干净,如果覆盖的话,不是真正的覆盖,在原来的代码上增加重复的代码,导致出错

  8. Java项目接入阿里云OSS存储

    需求背景 目前公司内部项目所支持的文件云存储方式还是公司内部项目组提供的方案,但在时间的考验之下,弊端显现,尤其是灾备切换过程中需要切换访问地址,这种操作不方便,更可能因为中间过程的失误导致资源不可用 ...

  9. CF1072C Cram Time

    思路: 首先二分找到使x * (x + 1) / 2 <= a + b最大的x,然后令p = min(a, b), q = max(a, b),按照x,x - 1, ..., 1的顺序选取数字把 ...

  10. pingall脚本

    p i n g a l l:一个按照/ e t c / h o s t s文件中的条目逐一p i n g所有主机的脚本 它能够按照/ e t c / h o s t s文件中的条目逐一p i n g所 ...