#!/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. perl 打开二进制文件,并拷贝内容

    实现脚本 use strict ; my $fileName = "/Users/chenfool/Desktop/sequoiadb-大数据平台构建.pdf" ; my $out ...

  2. PAT 1040有几个PAT

    原题:https://pintia.cn/problem-sets/994805260223102976/problems/994805282389999616 1040 有几个PAT (25 分) ...

  3. hibernate添加帮助文档和源码

  4. ios wkwebview同步cookie ajax请求偶尔异常问题

    let config = WKWebViewConfiguration.init() config.preferences = WKPreferences.init() config.preferen ...

  5. CSS 两边是线 中间是文字的效果

    刚开始做的时候 想了一下 这个是怎么做出来的,后来在网上看到有个类似的效果,研究一下 <!DOCTYPE html> <html lang="en"> &l ...

  6. JAVA Debug调试技术

    System.out.println(e),这个方法打印出异常,并且输出在哪里出现的异常,不过它和另外一个e.printStackTrace()方法不同.后者也是打印出异常,但是它还将显示出更深的调用 ...

  7. mongodb的基本命令操作

    mongodb在已经存在管理员的情况下,需要创建一个库 使用管理员进入mongodb的命令行界面 mongo admin -u 管理员名 -p 管理员密码 创建库(进入库) use 库名 创建当前库的 ...

  8. Java内置锁和简单用法

    一.简单的锁知识 关于内置锁 Java具有通过synchronized关键字实现的内置锁,内置锁获得锁和释放锁是隐式的,进入synchronized修饰的代码就获得锁,走出相应的代码就释放锁. jav ...

  9. Aop第一节

    什么是AOP AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP引入 ...

  10. VS中以插件开发的思想开发Winform应用

    简单定义: 插件(也称构件)式开发:主要内容就是一个宿主程序加上后期开发的若干插件程序构成整个系统! 宿主程序提供接口注册,插件注册实现接口,从而使不同的插件提供新的功能: 举例: 以下是用VS中的W ...