#!/usr/bin/env python
# encoding: utf-8 #@author: 东哥加油!
#@file: log_analyze.py
#@time: 2018/8/23 17:15 import pandas as pd
import re
import time
import datetime def tj_log_to_excel(from_file_name,to_file_name):
file=open(from_file_name,'r',encoding='UTF-8')
columns = ('表名','SELECT 统计','UPDATE 统计','INSERT 统计','DELETE 统计')
results = []
results.append(columns)
dict1 = {}
print(time.strftime("%H:%M:%S"))
for (num,line) in enumerate(file):
line = line.lower()
l_row = []
if(re.search(r'delete from ',line)):
str = re.findall(r"delete from ([a-zA-Z0-9_\.]*)", line)
str = str[0]
if(dict1.get(str) == None):
l_row = [0,0,0,1]
dict1[str] = l_row
else:
v = dict1.get(str)
v[3] = v[3] + 1
elif (re.search(r' from ',line)):
str = re.findall(r" from ([a-zA-Z0-9_\.]*)", line)
str = str[0]
if str != '':
if (dict1.get(str) == None):
l_row = [1, 0, 0, 0]
dict1[str] = l_row
else:
v = dict1.get(str)
v[0] = v[0] + 1
elif (re.search(r'"update ', line)):
str = re.findall(r"update ([a-zA-Z0-9_\.]*)", line)
str = str[0]
if str != '':
if (dict1.get(str) == None):
l_row = [0, 1, 0, 0]
dict1[str] = l_row
else:
v = dict1.get(str)
v[1] = v[1] + 1
elif (re.search(r'"insert into ', line)):
str = re.findall(r"insert into ([a-zA-Z0-9_\.]*)", line)
str = str[0]
if str != '':
if (dict1.get(str) == None):
l_row = [0, 0, 1, 0]
dict1[str] = l_row
else:
v = dict1.get(str)
v[2] = v[2] + 1 for key in dict1:
t_row = []
t_row.append(key)
t_row.append(dict1[key][0])
t_row.append(dict1[key][1])
t_row.append(dict1[key][2])
t_row.append(dict1[key][3])
results.append(t_row) df = pd.DataFrame(results)
df.to_excel(to_file_name)
print(time.strftime("%H:%M:%S")) if __name__ == '__main__':
now_time = datetime.datetime.now()
step_time = datetime.timedelta(days=1)
yes_time = now_time - step_time
pdate = yes_time.strftime('%Y%m%d')
from_file_name = '/usr/local/mysql-proxy/log/sql_balance.log_'+pdate
print(from_file_name)
to_file_name= '/data/shell/sk/sql_balance_'+pdate+'.xls'
tj_log_to_excel(from_file_name,to_file_name)

  

最新文章

  1. oracle add_months函数
  2. C++异常处理的问题
  3. 投票系统 & 简易js刷票脚本
  4. HDU 4334 Trouble
  5. geeksforgeeks@ Largest Number formed from an Array
  6. MiZ702学习笔记13——ZYNQ通过AXI-Lite与PL交互
  7. WPF中的Style
  8. Android开发之AIDL的使用一--跨应用启动Service
  9. 用JAVA给JSON进行排版
  10. Linux内核源代码解析之——我与神童聊Linux内核
  11. 手机自动化测试:Appium源码分析之跟踪代码分析六
  12. ●POJ 2828 Buy Tickets
  13. 39. Combination Sum(medium, backtrack 的经典应用, 重要)
  14. How to Simulate the Price Order or Price Line Function using API QP_PREQ_PUB.PRICE_REQUEST Includes
  15. jenkins自动化工具使用教程(转)
  16. 设置光标聚焦输入框(EditText)并弹出软键盘(在适配器中设置)
  17. 记自己利用hexo和github搭建个人博客的过程
  18. 实体类注解错误:Could not determine type for: java.util.List
  19. LIBS入门
  20. 前端框架VUE----node.js的简单介绍

热门文章

  1. MyBatis嵌套Collection
  2. RPC跟MQ之间的差异比较
  3. VLAN-6-VLAN Trunk协议(VTP)
  4. [C++]关于头文件中的防卫式声明
  5. [題解](貪心/堆)luogu_P2107小Z的AK計劃
  6. #10:wannanewtry——6
  7. OS 内存泄漏 导致 整个aix主机block
  8. I/O————字符流和流的关闭
  9. debian中sudo无法使用问题
  10. [转](不理想)Ubuntu下更改主显示器