#创建基表
CREATE TABLE `table_sum` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `table_name` varchar(50) DEFAULT NULL,
  `table_rows` int(11) DEFAULT NULL,
  `total_size` int(11) DEFAULT NULL,
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
#创建统计表
CREATE TABLE `table_day_growth` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `table_name` varchar(50) DEFAULT NULL,
  `table_rows` int(11) DEFAULT NULL,
  `total_size`  int(11) DEFAULT NULL,
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
#每天向基表里插入数据
cat insert_table_bak.sh
#!/bin/bash
source /etc/profile
mysql_login='/usr/local/mysql/bin/mysql'
 
$mysql_login  -uroot -pxxx -h10.10.88.168 -P3306 -BNe "SELECT   CONCAT(table_schema, '.', table_name) table_name, table_rows,CONCAT(ROUND(ROUND(data_length + index_length) / (1024 * 1024))) total_size  FROM     information_schema.tables WHERE     table_schema NOT IN ('information_schema' , 'performance_schema', 'sys', 'mysql','zabbix','test') and table_rows >=1000;" > /tmp/table_sum.txt
 
$mysql_login -e "load data infile '/tmp/table_sum.txt' ignore into table test.table_sum character set utf8  lines terminated by '\n' (table_name,table_rows,total_size);"
 
/bin/rm -rf /tmp/table_sum.txt
 
#统计基表里当天的数据
#!/bin/bash
mysql_login='/usr/local/mysql/bin/mysql'
 
$mysql_login  -NBe "select  table_rows  from test.table_sum  where create_time>=date_format(date_sub(now(),interval 1 day),'%Y-%m-%d %H:%i:00');" > s1
$mysql_login  -NBe "select  table_rows  from test.table_sum  where create_time<=date_format(date_sub(now(),interval 1 day),'%Y-%m-%d %H:%i:00') and create_time>=date_format(date_sub(now(),interval 2 day),'%Y-%m-%d %H:%i:00');" > s2
 
$mysql_login  -NBe "select  total_size  from test.table_sum  where create_time>=date_format(date_sub(now(),interval 1 day),'%Y-%m-%d %H:%i:00');" > s3
$mysql_login  -NBe "select  total_size  from test.table_sum  where create_time<=date_format(date_sub(now(),interval 1 day),'%Y-%m-%d %H:%i:00') and create_time>=date_format(date_sub(now(),interval 2 day),'%Y-%m-%d %H:%i:00');" > s4
 
$mysql_login  -NBe "select table_name  from test.table_sum where create_time>=date_format(date_sub(now(),interval 1 day),'%Y-%m-%d %H:%i:00') ;" > s10
 
n=1
for i in `cat s1`;do # 循环s1
    num=`sed -n "${n}p" s2` # 获取s2对行的数字
    minus=$(($i - $num)) # 两数相减
    echo $minus >> s5 # 打印结果
    n=$(($n + 1))
done
 
n=1
for i in `cat s3`;do # 循环s3
    num=`sed -n "${n}p" s4` # 获取s4对行的数字
    minus=$(($i - $num)) # 两数相减
    echo $minus >> s6 # 打印结果
    n=$(($n + 1))
done
 
/root/dba/calculate_table.py
 
/bin/rm -rf s1 s2 s3 s4 s5 s6 s10  table_info.txt
 
数据合并脚本
 
cat calculate_table.py
#!/usr/bin/env python
# coding:utf-8
import sys,os,MySQLdb
 
file1 = open("s5", "rb")
file2 = open("s6", "rb")
file3 = open("s10", "rb")
 
file_list1 = file1.readlines()  # 将所有变量读入列表file_list1
file_list2 = file2.readlines()  # 将所有变量读入列表file_list2
file_list3 = file3.readlines()  # 将所有变量读入列表file_list2
# print(type(file1))
 
# 定义各属性数据存储列表
file_list1_name = []
file_list2_name = []
file_list3_name = []
 
 
# 遍历file_list1 列表 将得到的信息进行下列操作
for message in file_list1:
 
    temp_list = message.split()
    # 将txt文件中的第一行 也就是file_list1 列表的第一项 用split方法操作 以空格为分隔符 分成两部分继续放到temp_list列表里
 
    file_list1_name.append(str(temp_list[0]))   
 
 
# 操作与file_list1列表完全相同
for message in file_list2:
    temp_list = message.split()
 
    file_list2_name.append(str(temp_list[0]))
 
# 操作与file_list1列表完全相同
for message in file_list3:
    temp_list = message.split()
 
    file_list3_name.append(str(temp_list[0]))
 
 
file_list4 = []
for i in range(len(file_list3_name)):
    s = ''
    s = '\t'.join([file_list3_name[i], file_list1_name[i], file_list2_name[i]])
    s += '\n'
    file_list4.append(s)
 
 
# 将数据写入file4
file4 = open("table_info.txt", "w")
file4.writelines(file_list4)
 
# 关闭文件
file1.close()
file2.close()
file3.close()
file4.close()
 
#table_info = open("/root/dba/table_info.txt", mode="r")
table_info = open("table_info.txt", mode="r")
for info in table_info.readlines():
    info_array = info.split()
    arg1 = info_array[0]
    arg2 = info_array[1]
    arg3 = info_array[2]
 
    # 打开数据库连接
    conn = MySQLdb.connect(host='10.10.88.18', port=3306, user='root', passwd='123456', db='test')
    # 使用cursor()方法获取操作游标
    cursor = conn.cursor()
    # SQL 插入语句
    sql = "INSERT INTO  table_day_growth(`table_name`,`table_rows`,`total_size`) values('%s','%s','%s')" % (arg1, arg2, arg3)
    try:
        # 执行sql语句
        cursor.execute(sql)
        # 提交到数据库执行
        conn.commit()
    except Exception as error:
        print(error)
        # 发生错误时回滚
        conn.rollback()
    # 关闭数据库连接
    conn.close()
 
table_info.close()
 

mysql 统计新增每天数据的更多相关文章

  1. mysql 统计按天、星期、按月数据的各种 sql 语句 (转录)

    文章主要是作为知识整理,内容略有修改,方便以后查阅,内容转摘至 陈宇衡的个人博客,欢迎前去围观. 作为演示效果,先创建一个测试表,在插入两条数据(注:时间为 datetime 类型,unix 时间戳需 ...

  2. python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图

    python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 # coding=utf-8 from openpyxl import load_workbook ...

  3. Mysql统计每年每个月的数据——详细教程

    Mysql统计每年每个月的数据(前端页面统计图实现) 最终想实现的效果图,在这里就不多废话了,直接上效果图,由于测试数据有几个月是为0的,所以数据图看着会有点怪怪. 接下来是数据库的两个表,这里直接给 ...

  4. MySQL 分区表原理及数据备份转移实战

    MySQL 分区表原理及数据备份转移实战 1.分区表含义 分区表定义指根据可以设置为任意大小的规则,跨文件系统分配单个表的多个部分.实际上,表的不同部分在不同的位置被存储为单独的表.用户所选择的.实现 ...

  5. 网站统计中的数据收集原理及实现(share)

    转载自:http://blog.codinglabs.org/articles/how-web-analytics-data-collection-system-work.html 网站数据统计分析工 ...

  6. 使用nginx lua实现网站统计中的数据收集

    导读网站数据统计分析工具是各网站站长和运营人员经常使用的一种工具,常用的有 谷歌分析.百度统计和腾讯分析等等.所有这些统计分析工具的第一步都是网站访问数据的收集.目前主流的数据收集方式基本都是基于ja ...

  7. Excel连接到MySQL,将Excel数据导入MySql,MySQL for Excel,,

    Excel连接到MySQL 即使当今时代我们拥有了类似微软水晶报表之类的强大报表工具和其他一些灵活的客户管 理应用工具,众多企业在分析诸如销售统计和收入信息的时候,微软的Excel依然是最常用的工具. ...

  8. TiDB 作为 MySQL Slave 实现实时数据同步

    由于 TiDB 本身兼容绝大多数的 MySQL 语法,所以对于绝大多数业务来说,最安全的切换数据库方式就是将 TiDB 作为现有数据库的从库接在主 MySQL 库的后方,这样对业务方实现完全没有侵入性 ...

  9. 【mysql】mysql统计查询count的效率优化问题

    mysql统计查询count的效率优化问题 涉及到一个问题 就是 mysql的二级索引的问题,聚簇索引和非聚簇索引 引申地址:https://www.cnblogs.com/sxdcgaq8080/p ...

随机推荐

  1. 爬虫入门六 总结 资料 与Scrapy实例-bibibili番剧信息

    title: 爬虫入门六 总结 资料 与Scrapy实例-bibibili番剧信息 date: 2020-03-16 20:00:00 categories: python tags: crawler ...

  2. R语言学习2:绘图

    本系列是一个新的系列,在此系列中,我将和大家共同学习R语言.由于我对R语言的了解也甚少,所以本系列更多以一个学习者的视角来完成. 参考教材:<R语言实战>第二版(Robert I.Kaba ...

  3. <U+200B> for, Zero Width Space ❌

    <U+200B> for, Zero Width Space zsh, bash https://www.cnblogs.com/xgqfrms/p/14233264.html#47944 ...

  4. Protocol Buffers All In One

    Protocol Buffers All In One Protocol Buffers - Google's data interchange format Protocol buffers are ...

  5. DB-Engines Ranking : Redis, MongoDB, MySQL

    DB-Engines Ranking http://db-engines.com/en/ranking The DB-Engines Ranking ranks database management ...

  6. js & replaceAll & non-global RegExp bug

    js & replaceAll https://caniuse.com/#search=replaceAll https://developer.mozilla.org/en-US/docs/ ...

  7. bash shell cli tools

    bash shell cli tools before # create files $ mkdir app-component $ cd app-component $ touch index.ht ...

  8. Node.js & module.exports & exports

    Node.js & module.exports & exports https://www.cnblogs.com/xgqfrms/p/9493550.html exports &a ...

  9. taro 如何展示多行文本 省略号

    taro 如何展示多行文本 省略号 webkit-box-orient: vertical; See the Pen Pure CSS multiline text with ellipsis by ...

  10. map & scale bug

    map & scale TW bug https://antv.alipay.com/zh-cn/g2/3.x/demo/map/drill-down.html import React, { ...