Java处理CSV文件示例

Java处理CSV文件示例

1. 导入依赖
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-csv</artifactId>
            <version>1.10.0</version>
        </dependency>
文件示例

下面是示例文件文件数据

在这里插入图片描述

vscode和idea都有解析CSV文件的插件, 通过不同的颜色或者网格区分. 建议下载一个

vscode建议使用: Edit CSV
idea建议使用: Big Data Tools

2.示例代码
@Test
    public void importData() {
        // 指定文件路径
        try (FileReader fileReader = new FileReader("D:\\xxx\\data.csv");
             CSVParser csvParser = new CSVParser(fileReader, CSVFormat.DEFAULT)) {
            // 获取每一行记录
            List<CSVRecord> records = csvParser.getRecords();
            // 待导入数据暂存列表
            List<SysModelData> list = new ArrayList<>();
            for (int i = 1; i < records.size(); i++) {
                String[] v = records.get(i).values();
                // 获取对应列的数据
                String lon = v[6];
                String lat = v[7];
                String ph = v[28];
                String yjz = v[29];
                String yjzc = v[30];
                String n = v[32];
                String nquan = v[31];
                String k = v[33];
                String slowK = v[34];
                String fastK = v[35];
                String p = v[36];
                String time = v[38];

                SysModelData build = SysModelData.builder()
                        .latitude(new BigDecimal(lat))
                        .longitude(new BigDecimal(lon))
                        .ph(Double.parseDouble(ph))
                        .yjz(Double.parseDouble(yjz))
                        .yjzc(Double.parseDouble(yjzc))
                        .nquan(Double.parseDouble(nquan))
                        .njianjie(Double.parseDouble(n))
                        .k(Double.parseDouble(k))
                        .kslow(Double.parseDouble(slowK))
                        .kfast(Double.parseDouble(fastK))
                        .p(Double.parseDouble(p))
                        .val18(1.0)
                        .build();
                list.add(build);
                // 得到数据列表之后可以随意操作, 我这里是导入数据库
                // 导入的时候建议采用批量导入, 效率较高
                if (list.size() % 5000 == 0) {
                    sysModelDataMapper.insertList(list);
                    list.clear();
                }
            }
            // 导入剩余数据
            sysModelDataMapper.insertList(list);
        } catch (IOException | ParseException e) {
            e.printStackTrace();
        }
    }

可以发现这个工具的作用就是方便于你打开文件以及返回你每一列的数据并帮您处理。 只需要专注每一列的数据的数据即可

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yfs1024

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

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

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

打赏作者

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

抵扣说明:

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

余额充值