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

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

前言

现在是: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文件中删掉继续执行即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323681.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.Net Core 2.0中的Razor Page不是WebForm

随着.net core2.0的发布,我们可以创建2.0的web应用了。2.0中新东西的出现,会让我们忘记老的东西,他就是Razor Page。下面的这篇博客将会介绍ASP.Net Core 2.0中的Razor Page。 在ASP.Net Core 2.0新特点之一就是支持Razor Page。今天的Razor…

记录几个部署项目常用的命令

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂 查询运行项目的进程 ps -aux|grep farbeat 杀死进程 kill -9 1600336进入目录 cd /www/wwwroot/farbeat/查看文件 ls将日志输出在nohup文件中的方式启动项目(注意.jar文件的名字) nohup j…

C#最佳工具集合:IDE、分析、自动化工具等

C#是企业中广泛使用的编程语言,特别是那些依赖微软的程序语言。如果您使用C#构建应用程序,则最有可能使用Visual Studio,并且已经寻找了一些扩展来对您的开发进行管理。但是,这个工具列表可能会改变您编写C#代码的方式。 C#编程的…

常用公有云接入——AZURE

一、概念 1、订阅 可以使用订阅为组织内的团队提供访问开发环境(即测试、生产、开发、临时部署等)和项目的权限。针对每个应用程序环境创建不同的订阅,并为每个订阅分配不同的服务管理员帐户,这是保护每个环境安全的一个好方法。…

记录几个常用部署项目的命令,以备后用!

“大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂”查询运行项目的进程ps -aux|grep farbeat杀死进程kill -9 1600336进入目录cd /www/wwwroot/farbeat/查看文件ls将日志输出在nohup文件中的方式启动项目(注意.jar文件的名字)nohup java -…

分布式测试工具Beetle.DT的部署并进行HTTP,SQL,TCP压测

由于Beetle.DT是一个分布式压力测试工具,所以在使用上并不像普通工具那样安装运行这么简单;由于工具涉及到测试管理中心,节点和管理端等工具; 所以必须要进行相应的部署才能运行。接下来详解一下如果安装Beetle.DT并进行简单的HTT…

常用公有云接入——谷歌

一、概念 1、项目 一个账号有唯一的项目&#xff0c;所有虚拟机都在project里面建。 2、计算引擎 虚拟机资源。 二、创建方式 1、页面控制台 2、gcloud命令行 3、REST API 4、SDK 三、Java SDK 1、创建API服务凭据&#xff0c;并下载P12文件 2、Maven <dependency&…

elementui实现表格单选功能

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 需求是这样的&#xff1a;用户单击购买产品的按钮时&#xff0c;会出现一个产品的列表&#xff0c;但是呢只能买一种产品&#xff0c;暂时不可以多选。效果如下所示&#xff1a; 原来…

element-ui实现表格单选的功能

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂”前言现在是&#xff1a;2022年4月20日13:33:23需求是这样的&#xff1a;用户单击购买产品的按钮时&#xff0c;会出现一个产品的列表&#xff0c;但是呢只能买一种产品&#xff0c;暂时不…

ASP.NET Core Razor 视图组件

视图组件简介 在新的ASP.NET Core MVC中&#xff0c;视图组件类似于局部视图&#xff0c;但它们更强大。视图组件不使用模型绑定&#xff0c;仅依赖于您在调用时提供的数据。 视图组件特性&#xff1a; 呈现页面响应的某一部分而不是整个响应包括在控制器和视图之间发现的关…

三个好用的并发工具类

转载自 三个好用的并发工具类 以前的文章中&#xff0c;我们介绍了太多的底层原理技术以及新概念&#xff0c;本篇我们轻松点&#xff0c;了解下 Java 并发包下、基于这些底层原理的三个框架工具类。 它们分别是&#xff1a; 信号量 Semaphore 倒计时门栓 CountDownLatch …

Error Handling in ASP.NET Core

前言 在程序中&#xff0c;经常需要处理比如 404&#xff0c;500 &#xff0c;502等错误&#xff0c;如果直接返回错误的调用堆栈的具体信息&#xff0c;显然大部分的用户看到是一脸懵逼的&#xff0c;你应该需要给用户返回那些看得懂的界面。比如&#xff0c;“当前页面不存在…

基于python的selenium

一.安装 安装WebDriver 查看chrome版本号&#xff0c;设置-帮助-关于Google chrome&#xff0c;找到版本号。 可以到这个网站进行下载对应版本的chromedriver,如果chrome浏览器版本过高,可以下载最新版的chromedriver进行使用 Chrome for Testing availability 下载下来之后…

多信息登录、检测用户信息是否完善且引导补全

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注&#xff1a;穆雄雄的博客 前言 现在是2022年4月28日13:41:29&#xff01; 今天分享两块内容。 1.需求&#xff1a;用户可以通过手机号、邮箱来注册我们的系统&#xff0c;用户完成之后&#xff0c;可以去完善自己的个人信息…

PNG 图片压缩原理解析

转载自 PNG 图片压缩原理解析 什么是PNG PNG的全称叫便携式网络图型&#xff08;Portable Network Graphics&#xff09;是目前最流行的网络传输和展示的图片格式&#xff0c;原因有如下几点&#xff1a; 无损压缩&#xff1a;PNG图片采取了基于LZ77派生算法对文件进行压缩&…

element ui实现多层级复杂表单的操作(添加与回显)之表单操作交互操作

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 现在是2022年5月3日11:47:15&#xff01;劳动节假期已经过去了三天了&#xff0c;今天是被封家里的第7天&#xff0c;也是解封的第一天。 说实话&#xff0c;在家里的工作效率一点都…

TypeScript 2.5 发布,增加语言级重构

在 TypeScript 2.5 版本中&#xff0c;Microsoft 专注于提高开发人员的生产力&#xff0c;其范围已经超出了代码编辑器所提供的常见功能。 习惯于类型语言&#xff08;如 C&#xff03;&#xff09;的开发人员喜欢使用那些可以轻松执行常见重构的工具。现在 TypeScript 可以利…

element ui实现多层级复杂表单的操作(添加与回显)之添加功能实现

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 现在是2022年5月3日13:35:15&#xff01;文接上篇。[element ui实现多层级复杂表单的操作&#xff08;添加与回显&#xff09;之表单操作交互操作](element ui实现多层级复杂表单的操…

Entity Framework Core Like 查询揭秘

在Entity Framework Core 2.0中增加一个很酷的功能&#xff1a;EF.Functions.Like()&#xff0c;最终解析为SQL中的Like语句&#xff0c;以便于在 LINQ 查询中直接调用。 不过Entity Framework 中默认提供了StartsWith、Contains和EndsWith方法用于解决模糊查询&#xff0c;那…

element ui实现多层级复杂表单的操作(添加与回显)之回显功能实现

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 现在是2022年5月3日17:02:30&#xff01;文接上两篇。 [element ui实现多层级复杂表单的操作&#xff08;添加与回显&#xff09;之表单操作交互操作](element ui实现多层级复杂表单…