实用小功能:java读取数据

前言:

     在工作中,我时不时会遇到一些数据整理、数据清洗、数据统计等数据相关的小需求。有时候,我会把数据整理后放入数据库,通过SQL处理数据。如果SQL处理不了,我会从数据库中读取,放到Java程序中处理(PS:因为我使用Java语言比较顺手,Python和Shell简单的还可以,复杂的就不行了)。有时候,我也会直接从文件中读取数据,然后再放到Java程序中处理。

正文:

一、数据整理到数据库:

        将数据整理到数据库的方法:我一般都是把数据放到Excel中,通过Navicat的导入功能将导入数据,然后再写SQl处理数据。

二、数据整理到Java程序中:

1. 从文件中读取数据:

        从文件中读取数据,主要是使用Java处理I/O流的相关方法,将数据从文件中一行一行读取,存入Java内存。然后再通过Java程序处理数据,具体如下:

   /**
     * 通过文件读取数据
     *
     * @param filePath
     * @return
     */
    private static List<Map<String, String>> readDataByFile(String filePath) {
        List<Map<String, String>> list = new ArrayList<>();

        File file = new File(filePath);
        BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader(file));
            String s = null;
            // 使用readLine方法,一次读一行
            while ((s = br.readLine()) != null) {
                String[] array = s.split("#");
                list.add(new HashMap<String, String>(4) {{
                    put("name", array[0]);
                    put("age", array[1]);
                }});
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        return list;
    }

2. 从数据库中读取数据:

        从数据库中读取数据,主要是使用Java的JDBC相关方法,首先注册相关数据库驱动,然后建立数据库连接,再执行相关SQL语句获取数据,再将数据存入Java内存中,最后不要忘记关闭数据库连接。具体实现如下:

      private static final String DB_URL = "jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true";

    private static final String DB_USERNAME = "root";

    public static final String DB_PASSWORD = "root";

    public static final String SQL = "SELECT * FROM test";


   /**
     * 通过MySQL读取数据
     *
     * @return
     */
    private static List<Map<String, String>> readDateByMySQL() {
        List<Map<String, String>> list = new ArrayList<>();
        Connection connection = null;
        try {
            // 注册驱动
            DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
            // 创建连接
            connection = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD);
            // 执行语句
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery(SQL);
            // 获取元数据
            ResultSetMetaData metaData = resultSet.getMetaData();
            int columnCount = metaData.getColumnCount();
            HashMap<String, String> map = null;
            // 获取每一行数据
            while (resultSet.next()) {
                map = new HashMap<>(8);
                for (int i = 0; i < columnCount; i++) {
                    // 获取列名
                    String colName = metaData.getColumnName(i + 1);
                    // 获取列对应的值
                    String value = resultSet.getString(colName);
                    map.put(colName, value);
                }
                list.add(map);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 关闭连接
            try {
                connection.close();
            } catch (Exception ex) {
            }
        }
        return list;
    }

3.提示:

        有时候,我们有可能在Liunx环境下执行单个Java文件,这时可以使用相应的java命令。但是要注意文件的编码格式,以及是否引用JDK以外的jar架包,举例如下:

Linux下编译和运行方法(多个jar包之间使用分号:):
javac  -encoding UTF-8  -cp .:/data/test/mysql-connector-java-8.0.20.jar  ./No1ReadData.java
java  -Dfile.encoding=utf8  -cp .:/data/test/mysql-connector-java-8.0.20.jar No1ReadData

4.例子代码地址:

springboot_demo: springboot_demo   springboot-java-basic-note模块 com.hanxiaozhang.practicalfunction.No1ReadData

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hanxiaozhang2018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值