java 每日习题(六)从文件收集数据记录到mysql

1. mysql建库,建表

2. 准备数据文件cpu.txt

1447836374319,169,0,0
1447836375346,498,0,0
1447836376346,250,0,0
1447836377347,0,0,0
1447836378347,497,0,0
1447836379347,0,0,0
1447836380347,498,0,0
1447836381348,0,0,0
1447836382348,498,0,0
1447836383348,0,0,0
1447836384348,248,0,0
1447836385348,0,0,0

3. 收集数据记录到mysql

  使用到的类说明:

  3.1  File 获取文件句柄,File实例代表一个本地文件。

  3.2  FileInputStream is meant for reading streams of raw bytes such as image data.

  3.3  An InputStreamReader is a bridge from byte streams to character streams: It reads bytes and decodes them into characters using a specified charset.

  3.4  BufferedReader: Reads text from a character-input stream, buffering characters so as to provide for the efficient reading of characters, arrays, and lines.

package collect_part;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;

public class CollectData {

    public static void main(String[] args) {

        String path = "d:\\logs\\cpu.txt";
        CollectData data = new CollectData();
        data.readFile(path);

    }

    public void readFile(String filePath) {
        InfoBean infoBean = new InfoBean();
        try {
            String encodeing = "GBK";
            File file = new File(filePath);
            if (file.isFile() && file.exists()) {
                InputStreamReader isr = new InputStreamReader(new FileInputStream(file), encodeing);
                BufferedReader bufferedReader = new BufferedReader(isr);
                String lineTxt = null;
                OperationDB opdb = new OperationDB();
                while ((lineTxt = bufferedReader.readLine()) != null) {
                    String[] s = lineTxt.split(",");
                    //System.out.println(s[0].toString() + s[1].toString() + s[2].toString() + s[3].toString() );
                    infoBean.setTimeStamp(s[0].toString());
                    infoBean.setElapsed(s[1].toString());
                    infoBean.setGrpThreads(s[2].toString());
                    infoBean.setAllThreads(s[3].toString());
                    opdb.addRcorder(infoBean);
                    System.out.println(lineTxt);
                }

                isr.close();

            } else {
                System.out.println("not found specific file");
            }
        } catch (Exception e) {
            System.out.println("read file content error");
            e.printStackTrace();
        }

    }
}

创建连接

package collect_part;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class MysqlConnection {
    public static Connection getConnection() {

        Connection conn = null;
        String url = "jdbc:mysql://10.1.1.148:3306/testresults";
        String user = "user";
        String password = "passwd";

        try {

            conn = DriverManager.getConnection(url, user, password);
        } catch (SQLException ex) {
            Logger.getLogger(MysqlConnection.class.getName()).log(Level.SEVERE,null, ex);
        }
        return conn;

    }
}

操作数据库

package collect_part;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class OperationDB {
    private Connection conn = null;

    public void addRcorder(InfoBean infoBean) throws SQLException {
        if (conn == null) {
            conn = MysqlConnection.getConnection();
        }

        String sql = "INSERT INTO cpuInfo (`timeStamp`, `elapsed`, `grpThreads`, `allThreads`) VALUES (?, ?, ?, ?)";

        PreparedStatement pstmt = conn.prepareStatement(sql);
        pstmt.setLong(1, infoBean.getTimeStamp());
        pstmt.setLong(2, infoBean.getElapsed());
        pstmt.setLong(3, infoBean.getGrpThreads());
        pstmt.setLong(4, infoBean.getAllThreads());

        pstmt.executeUpdate();
    }
}

记录信息

package collect_part;

public class InfoBean {

    long timeStamp;
    long elapsed;
    long grpThreads;
    long allThreads;

    public long getTimeStamp() {
        return timeStamp;
    }
    public void setTimeStamp(String timeStamp) {
        this.timeStamp = Long.parseLong(timeStamp);
    }
    public long getElapsed() {
        return elapsed;
    }
    public void setElapsed(String elapsed) {
        this.elapsed = Long.parseLong(elapsed);
    }
    public long getGrpThreads() {
        return grpThreads;
    }
    public void setGrpThreads(String grpThreads) {
        this.grpThreads = Long.parseLong(grpThreads);
    }
    public long getAllThreads() {
        return allThreads;
    }
    public void setAllThreads(String allThreads) {
        this.allThreads = Long.parseLong(allThreads);
    }

}
时间: 2024-08-01 10:41:40

java 每日习题(六)从文件收集数据记录到mysql的相关文章

如何将.SQL文件的数据导入到Mysql的数据库中

一.用cmd的调试环境导入.sql文件中的数据: WinR键打开cmd输入: MySQL -u root -p 进入MySQL后MySQL>use DR;   MySQL> source c:/DR.sql 注意上面的 DR是你事先创建好的文件夹,创建在Mysql的data目录下面,DR.sql是你下载的数据库的内容,注意DR.sql是要放在磁盘的最外层目录的,否则无法导入数据. 二.用Mysql Workbence调试环境导入数据: 打开Mysql Workbence软件,选择Data Im

【java IO】使用Java输入输出流 读取txt文件内数据,进行拼接后写入到另一个文件中

1 package com.sxd.test.util; 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.File; 6 import java.io.FileInputStream; 7 import java.io.FileOutputStream; 8 import java.io.IOException; 9 import java.io.InputStreamRea

java 每日习题(十一)读取配置文件

题目:从配置文件config.propeties中读取数据 1. 使用Configuration接口获取配置文件中的数据 2. 方法和变量都添加static关键字,让这个类在加载后直接执行getFileInfo方法,其它类可以直接通过静态变量调用配置文件中的数据. package everyday; import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.Conf

java 每日习题(二) 用decimalFormat格式化输出

import java.text.DecimalFormat; import java.text.NumberFormat; /* * 输出: 02 A 04 A 06 A 08 A 10 A; 12 A 14 A 16 A 18 A 20 A; 22 A 24 A 26 A 28 A 30 A; 32 A 34 A 36 A 38 A 40 A; 42 A 44 A 46 A 48 A 50 A; */ public class outputPattern { public static vo

java 每日习题(一)

一直以来自学java都没什么方法,除了工作中有少量接触之外,看完语法以后,不知道如何进步,无奈呀,只好坚持刷题练习,希望能有所积累和领悟. 题目:生成100个0到99之间的随机整数,找出它们之中的最大者和最小者,并统计大于50的整数个数,排序数组,去重 import java.util.HashSet;import java.util.Set; public class RandomNum { public static void main(String[] args) {        int

java 每日习题(七)统计字符串中字母、空格、数字和其它字符的个数

题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. 先把String转化成array,再通过Character中的几个方法对每个char进行判断. 下面是Character类的介绍: Character 类在对象中包装一个基本类型 char 的值.Character 类型的对象包含类型为 char 的单个字段. 此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然. package everyDay; import java

java 每日习题(五) 下落的小球

1 package everyDay; 2 3 /* 4 * 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半:再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高? 5 */ 6 public class FreeFall { 7 8 public static void main(String[] args) { 9 double sum = 0; 10 double down = 100; 11 double up; 12 13 for (int time = 1;

java 每日习题(四)求101-200之间的素数

1 package everyDay; 2 3 /* 4 * 查找 101 - 200之间的素数 5 */ 6 public class FindPrimeNumber { 7 8 public static void main(String[] args) { 9 10 System.out.println("primeNumber is :"); 11 12 for (int primeNumber = 101; primeNumber <= 200; primeNumber

使用JDBC+POI把Excel中的数据导出到MySQL

POI是Apache的一套读MS文档的API,用它还是可以比较方便的读取Office文档的.目前支持Word,Excel,PowerPoint生成的文档,还有Visio和Publisher的. http://poi.apache.org/download.html 具体的用法可以查阅文档里面您的quickguide,我给出我自己的范例,从xls文件把数据导出到MySQL. 这里面我总是假定excel在第一个sheet并且第一行是字段名,能够自动从第一行读取字段名建立一个表然后导入数据. pack