大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂

前言

现在是:2022年4月20日13:33:23

以前是怎么都没想到,我需要在服务器的nohup文件中找记录,然后往数据库里面更新。具体因为啥不提了,说多了都是愧啊~今天主要是分享一个java解析nohup文件提取关注的信息,然后添加到数据库中。

实现思路

刚开始我是直接将nohup文件中的信息手动复制出来,然后写了个insertsql语句,一条一条的往里面添加,结果发现有上千条,这么干不睡觉都加不进去多少,于是想到了找小杨小于帮帮忙,无奈有点复杂,光给他两讲怎么加讲了半天,还不能保证他两会了,数据能加对。。。。。

后来想了个办法,将nohup文件先转换成txt文件,然后解析txt文件,根据关键字提取关键信息,拿到之后截取成固定字符串,通过jdbc的方式添加在数据库中。

  1. nohup文件的后缀改成txt
  2. 观察自己关注的数据的规律,尤其是前后有什么可以标识的,看了看,可以根据Parameters这个来解析。

  1. 因为很不规律,所以有单独查找了下(Timestamp),截取成一个字符串
  2. 本来想着按照逗号来将这个字符串中所有需要的信息截取到,依次添加到数据库中,结果发现有个字段是介绍,里面的值也有逗号,有中文的逗号,也有因为的逗号,这种方法看来行不通。
  3. 想办法查找(Stirng),全文替换成~,然后按照~查找,最后在截取,终于可行了。

实现代码

1.按照Parameters解析txt文件:

 package com.ruoyi.web.controller.util;import com.ruoyi.system.domain.EquipmentRZ;import java.io.File;import java.io.FileNotFoundException;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Scanner;/*** @author: muxiongxiong* @date: 2022年04月19日 上午 11:05* 公众号:雄雄的小课堂* 博客:https://blog.csdn.net/qq_34137397* 个人站:http://www.穆雄雄.com* 个人站:http://www.muxiongxiong.cn* @Description: 解析txt文件获取里面的数据* 最初解析的是nohup文件,现在改为解析txt文件* 将txt文件里面的内容,解析成对象,添加到认证器材表里去*/public class ParseTXTFileUtils {public void parseTxt(){File file = new File("D:\\test3.txt");SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");if (!file.exists()) {System.out.println("节点基本信息文件未找到");}Scanner s = null;try {s = new Scanner(file);} catch (FileNotFoundException e) {e.printStackTrace();}while (true) {//文档中的内容String danci = s.next();if ("Parameters:".equals(danci)) {//开始留存需要的数据.String jixu = "";int count = 0;while (true) {EquipmentRZ equipmentRZ = new EquipmentRZ();String danci2 = s.next();jixu += danci2;if (danci2.indexOf("Timestamp") != -1) {String sheng = s.next();String shi = s.next();String qu = s.next();String renzheng = s.next();String tupian = s.next();String jieshuriqi = s.next();jixu += sheng + shi + qu + renzheng + tupian + jieshuriqi;//System.out.println("jixu========"+jixu);//按照逗号分割String[] split = jixu.split("~,");//获取到的数据try {equipmentRZ.setId(Integer.parseInt(split[0]));equipmentRZ.setName(split[1]);equipmentRZ.setXinghao(split[2]);equipmentRZ.setJianjie(split[3]);equipmentRZ.setZhuangtai(split[4]);equipmentRZ.setGongsi1(split[5]);equipmentRZ.setGongsi2(split[6]);equipmentRZ.setRealName(split[7]);equipmentRZ.setLeixing(split[8]);equipmentRZ.setGongsi3(split[9]);//2016-11-3011:35:08.0(Timestamp),天津市String shijian = split[10];//按照逗号分割String[] split1 = shijian.split(",");//截取最后的(Timestamp)int index = split1[0].lastIndexOf("(");String kaishishijian = split1[0].substring(0, index);//第9位后面加上空格StringBuffer sb = new StringBuffer(kaishishijian);sb.insert(10, " ");equipmentRZ.setBeginDate(simpleDateFormat.parse(sb.toString()));equipmentRZ.setSheng(split1[1]);equipmentRZ.setShi(split[11]);equipmentRZ.setJiedao(split[12]);equipmentRZ.setRenzheng(split[13]);equipmentRZ.setTupian(split[14]);String jieshu = split[15] + " 00:00:00";equipmentRZ.setEndDate(simpleDateFormat.parse(jieshu));//System.out.println(equipmentRZ);} catch (ParseException e) {e.printStackTrace();}//调佣添加的方法 将数据添加到数据库//已经执行完毕 2022年4月19日11:08:54/* ZhiXingMysql zhiXingMysql = new ZhiXingMysql();zhiXingMysql.saveEquipmentRZ(equipmentRZ);*/break;}}}}}}

2.由于字段太多了,所以封装了个实体类,字段如下:

 /*** @author: muxiongxiong* @date: 2022年04月19日 0:25* 公众号:雄雄的小课堂* 博客:https://blog.csdn.net/qq_34137397* 个人站:http://www.穆雄雄.com* 个人站:http://www.muxiongxiong.cn* @Description: 类的描述*/
public class EquipmentRZ {private Integer id;private String name;private String xinghao;private String jianjie;private String zhuangtai;private String gongsi1;private String gongsi2;private String gongsi3;private String realName;private String leixing;private Date beginDate;private String sheng;private String shi;private String jiedao;private String tupian;private String renzheng;private Date endDate;}

3.jdbc添加到数据库中的方法:

 public void saveEquipmentRZ(EquipmentRZ equipmentRZ) {int success = 0,err=0;String sql = "INSERT INTO sys_rzequipment ( equipment_id,equipment_name, equipment_model, equipment_introduction,equipment_status, production_name, maintenance_name, installation_company_name,maintenance_people, equipment_type,  installation_date, installation_province, installation_city, installation_address,  equipment_img_url, create_time,date_come_from ) \n" +"VALUES(?,?,?,?,?,?,?, ?,?,?,?,?,?,?,?,?,?)";Connection connection = null;PreparedStatement pStatement = null;try {connection = getConnection();pStatement = connection.prepareStatement(sql);pStatement.setInt(1, equipmentRZ.getId());pStatement.setString(2, equipmentRZ.getName());pStatement.setString(3, equipmentRZ.getXinghao());pStatement.setString(4, equipmentRZ.getJianjie());pStatement.setString(5, equipmentRZ.getZhuangtai());pStatement.setString(6, equipmentRZ.getGongsi1());pStatement.setString(7, equipmentRZ.getGongsi2());pStatement.setString(8, equipmentRZ.getGongsi3());pStatement.setString(9, equipmentRZ.getRealName());pStatement.setString(10, equipmentRZ.getLeixing());pStatement.setObject(11, equipmentRZ.getBeginDate());pStatement.setString(12, equipmentRZ.getSheng());pStatement.setString(13, equipmentRZ.getShi());pStatement.setString(14, equipmentRZ.getJiedao());pStatement.setString(15, equipmentRZ.getTupian());pStatement.setObject(16, equipmentRZ.getEndDate());pStatement.setString(17, equipmentRZ.getRenzheng());int count = pStatement.executeUpdate();if(count>0){success++;System.out.println("成功:"+success+"==="+equipmentRZ.getId());}else{err++;System.out.println("失败:"+err+"===="+equipmentRZ.getId());}} catch (Exception e) {e.printStackTrace();} finally {closePreparedStatement(pStatement);closeConnection(connection);}}

最后运行main方法就可以了。、

注意事项

  • 为了保险起见,刚开始测试的时候测试添加的数据尽量的少点儿,也就是将txt重新复制出来一份,只留几条记录,执行一遍main方法,观察一下数据库中的数据是否正确。
  • 执行的过程中可能会遇到错误,因为Parameters可能在登录操作的时候也会出现,所以遇到不是添加的sql的话,也会报错的,只需要将原来执行过的删掉,不规则的Parameters数据在txt文件中删掉继续执行即可。

springboot解析txt文件顺便加到数据库中(nohup文件)相关推荐

  1. mysql导入数据dmp文件怎么打开_数据库中dmp文件怎么打开?dmp文件打开详细的处理方法...

    各位有没有观察到很多用户都比较热爱操作win7系统,但是在操作的过程遇到dmp文件怎么打开,以便不被dmp文件怎么打开所烦恼,那dmp文件怎么打开如何解决呢?接下来给各位提供一下dmp文件怎么打开详细 ...

  2. 如何将.FRM,.MYD,MYI文件转换为.SQL导入数据库中

    先说说这几种文件是干什么的:  *.frm是描述了表的结构,  *.myd保存了表的数据记录,  *.myi则是表的索引.  其实一个.frm文件就是对应的数据库中的一个表,表示数据表的表结构.  . ...

  3. SQL Server 数据库中添加文件组和数据文件

    SQL Server 现有数据库中添加文件组和数据文件use CURRENT_DB --进入当前操作数据库 go alter database CURRENT_DB add filegroup FG1 ...

  4. C# 文件保存到数据库中或者从数据库中读取文件

    首先,介绍一下保存文件到数据库中. 将文件保存到数据库中,实际上是将文件转换成二进制流后,将二进制流保存到数据库相应的字段中.在SQL Server中该字段的数据类型是Image,在Access中该字 ...

  5. php文件上传并保存路径到数据库,thinkphp表单上传文件并将文件路径保存到数据库中?...

    上传单个文件,此文以上传图片为例,上传效果如图所示 创建数据库upload_img,用于保存上传路径 CREATE TABLE `seminar_upload_img` (  `id` int(11) ...

  6. Spark Core (TopN、mysql写入、读取文件通过RDD结合数据库中的表)练习3套

    pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...

  7. Python爬取起点小说并保存到本地文件夹和MongoDB数据库中

    Python爬取起点小说并保存到本地MongoDB数据库中 工具:Python3.7 + Mongo4.0 + Pycharm """ 爬取起点小说<诡秘之主> ...

  8. java jsonsql_java遍历解析json数据并插入到数据库中(MySQL)

    1.思路 读取json资源文件 File转化为JSON串 JSON串转对象集合 遍历插入到数据库 2.工具(jar包) 使用spring-core,fastjson,commons-io,mysql ...

  9. oracle数据库表excel文件位置,“如何将excel表格数据导入到oracle数据库对应的表中?“数据库文件导入excel表格数据库中...

    如何实现Excel表格自动导入到数据库 库?是什么数据库?sql?access?mysql?我以sql2008为例子 1.打开SQL Server Management Studio-任务-数据 2. ...

最新文章

  1. golang中的aliyunoss
  2. python中name没有定义_python中__name__的使用
  3. Linux IPTables:如何添加防火墙规则
  4. java写龟兔赛跑_有关JAVA编写龟兔赛跑的游戏的问题。求助……
  5. linux内实践核分析模块
  6. 最简单的基于FFmpeg的移动端例子:Android 视频转码器
  7. 设计模式的征途—23.解释器(Interpreter)模式
  8. Django中mysql的正向建模与反向建模
  9. 关于网页消息提示音问题解决与实现
  10. WdatePicker开始时间与结束时间
  11. php 微信公众号自定义菜单栏,php实现微信公众号创建自定义菜单
  12. springboot 利用aop实现系统日志和操作日志记录
  13. 洗扑克牌(乱数排列)(c/python略)
  14. Logo就是商标吗?别再被扰乱视线了
  15. 前端性能优化:1.什么是前端性能优化
  16. Matlab中如何修改字体的大小?
  17. miui怎么用第三方图标包_快来领取你的图标包~
  18. SQL 把查询结果当作表来使用
  19. 高等数学(下)曲线积分与曲面积分
  20. Java入门复合语句和条件语句(羊驼)

热门文章

  1. SCAU 计算智能 暴力美学(二)
  2. 2021-01-28 英文写作中的“因此”
  3. 捋一捋Python的文件属性和增删查改等(下)
  4. 全局安装nuxt_nuxt配置
  5. php转类json格式的数据(没有双引号的JSON格式,一般在硬件对接中出现)
  6. Java实现 LeetCode 771 宝石与石头(这是真暴力)
  7. 2014.11.20
  8. <a>标签 打开新窗口
  9. linux音乐服务器mpd,在你的 Fedora 终端上播放音乐 | Linux 中国
  10. Easyx基本使用(二)