当前位置: 首页 > news >正文

python查询日志,并组装sql,修复缺失的数据

前言

由于mysql链接超时波动,导致数据缺失,需要根据日志填补数据

流程

获取确实数据的订单列表

搜索日志,获取请求日志

根据请求日志拼装sql

打印sql供修复数据

代码

因为我们日志打印的有问题,所以这里用字符串截取获取入参。如果日志打印的是标准json,直接搞json即可

from elasticsearch import Elasticsearch
import jsonclass MyUtils:passdef getValue(fullStr, beginStr, endStr):start = fullStr.find(beginStr) + len(beginStr)end = fullStr.find(endStr)value = fullStr[start:end]return valuedef setValue(orderInfoExt, columnName, fullStr, beginStr, endStr):value = MyUtils.getValue(fullStr, beginStr, endStr)if value != 'null':orderInfoExt[columnName] = valuees = Elasticsearch(hosts="http://xxx:9200/", http_auth=('xxx', 'xxx'))
scroll_id = None
fileName = "create-order-info" + ".txt"
orderIdList = [74xxxx574,74xxxx822]
orderExtInfoList = []for orderId in orderIdList:query_json = {"_source": ["message", "logger_name", "@timestamp"],"query": {"bool": {"filter":[{"bool":{"filter":[{"multi_match":{"lenient": True,"query": "order/v1/createOrder","type": "phrase"}},{"multi_match":{"lenient": True,"query": orderId,"type": "phrase"}}]}},{"range":{"@timestamp":{"format": "strict_date_optional_time","gte": "2024-11-01T00:00:00.000Z","lte": "2024-11-02T10:00:00.000Z"}}}],"must":[],"must_not":[],"should":[]}}}query = es.search(index='xxxx-pro*', body=query_json, scroll='25m', size=5000,request_timeout=2000000)for k in query['hits']['hits']:timestr = k['_source']['@timestamp']request = k['_source']['message']orderInfoExt = {}#beancopy的字段MyUtils.setValue(orderInfoExt, 'user_device_mac', request, "userDeviceMac=", ", userDeviceImei")MyUtils.setValue(orderInfoExt, 'user_device_imei', request, "userDeviceImei=", ", userDeviceImsi")#特殊的字段MyUtils.setValue(orderInfoExt, 'order_id', request, "orderId=", ", oid")MyUtils.setValue(orderInfoExt, 'user_order_ip', request, "userIpAddr=", ", userPort")#print(orderInfoExt)orderExtInfoList.append(orderInfoExt)
# 假设表名为 orders
table_name = 'order_info_ext'
for orderInfoExt in orderExtInfoList:# 提取列名columns = ', '.join(orderInfoExt.keys())# 提取值,并处理为适当的格式values = []for key, value in orderInfoExt.items():if value == 'null':values.append('NULL')elif isinstance(value, (int, float)):values.append(str(value))elif isinstance(value, str):values.append("'"+value+"'")else:values.append('NULL')# 构建 INSERT 语句sql = f"INSERT INTO {table_name} ({columns}) VALUES ({', '.join(values)});"print(sql)

http://www.lryc.cn/news/482626.html

相关文章:

  • RecyclerView进阶知识讲解
  • C语言 函数
  • windows中docker安装redis和redisinsight记录
  • itextpdf打印A5的问题
  • qt QUndoView详解
  • python+智谱AI-实现钉钉消息自动回复
  • Kafka-Eagle的配置——kafka可视化界面
  • 【命令操作】Linux上带宽流量监控nethogs命令详解 _ 统信 _ 麒麟 _ 方德
  • 【入门篇】数字统计——多语言版
  • 探索那些现代C++语法糖
  • 【LeetCode】【算法】33. 搜索旋转排序数组
  • Python小游戏25——黄金矿工
  • WPF中Prism框架中 IContainerExtension 和 IRegionManager的作用
  • C++实现用户分组--学习
  • 鸿蒙华为商城APP案例
  • 回首遥望-C++内存对齐的思考
  • 力扣 LeetCode 704. 二分查找(Day1:数组)
  • 【Mode Management】AUTOSAR架构下唤醒源检测函数EcuM_CheckWakeup详解
  • Zabbix基础信息概述
  • SpringBoot(十二)SpringBoot配置redis
  • Pycharm安装
  • OpenAI大改下代大模型方向,scaling law撞墙?AI社区炸锅了
  • 技术整合与生态构建:Lyft与Mobileye引领自动驾驶新纪元
  • 利用huffman树实现对文件A先编码后解码
  • 第三十九章 基于VueCli自定义创建项目
  • 网页web无插件播放器EasyPlayer.js点播播放器遇到视频地址播放不了的现象及措施
  • LLaMA-Factory学习笔记(1)——采用LORA对大模型进行SFT并采用vLLM部署的全流程
  • PHP和Python脚本的性能监测方案
  • C语言实现数据结构之堆
  • 战略共赢 软硬兼备|云途半导体与知从科技达成战略合作