不用线程 批量插入

 @PostMapping("test1")
    public void test1() {
        List<String> list = getFile("C:\\data\\历史个例");
        test1(list);
    }
//    public static void main(String[] args) {
//
//        List<String> list = getFile("C:\\data\\历史个例");
//        test1(list);
//    }

    private  void test1(List<String> list){
        // 定义list,方便后面批次新增 TlVacuumFurnaceLog是表实体类
        List<TlVacuumFurnaceLog> result1 = new ArrayList<>();
        List<TlVacuumFurnaceLog> result10 = new ArrayList<>();
            try {
                for (String s : list) {
                    BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(s), "GBK"));
                    //reader.readLine();//第一行信息是标题信息,跳过,如果需要第一行信息,请删除这行代码
                    //区别1分钟和10分钟入库
                    if (s.contains("excel1min")) {
                        // 循环每行数据
                        pakdata(result1, s, reader);
                    }else if (s.contains("excel10min")) {
                        // 循环每行数据
                        pakdata(result10, s, reader);
                    }
                }
                // 保存到数据库
//                warnService.saveBatch1(result1);
//                warnService.saveBatch10(result10);
            } catch(Exception e){
                e.printStackTrace();
            }
    }

    private static void pakdata(List<TlVacuumFurnaceLog> result10, String s, BufferedReader reader) throws IOException {
        String line;
        String fileName = new File(s).getName();
        while ((line = reader.readLine()) != null) {
            String item[] = line.split(",");
            if (item.length > 0) {
                // 调用下面的方法,将每列数据赋值到对应的属性中,返回的结果新增到list内
                //result.add(propertiesAssignment(item));
                TlVacuumFurnaceLog a = new TlVacuumFurnaceLog();
                a.setData(item[1].trim());
                a.setTm(item[0].trim());
                if (fileName.contains("A")) {
                    fileName = fileName.replace("A", "65");
                }
                a.setStcd(fileName.substring(0, fileName.lastIndexOf(".")));
                result10.add(a);
            }
        }
    }

    // 给定目录的绝对路径,获取该目录下的所有文件(子目录的文件也可递归得到)
    public  List<String> getFile(String path) {
        List<String> list = new ArrayList<>();
        File file = new File(path);
        File[] array = file.listFiles();
        for (int i = 0; i < array.length; i++) {
            if (array[i].isFile()) {
                String res = array[i].getPath();
//                System.out.println("^^^^^" + array[i].getName());
//                System.out.println("#####" + array[i]);
//                System.out.println("*****" + res);
                list.add(res);
            } else if (array[i].isDirectory()) {
                list.addAll(getFile(array[i].getPath()));
            }
        }
        return list;
    }
    //    /**
//     * 将行数据中每列数据分别添加到对应的属性中,返回实体类
//     */
//    private static TlVacuumFurnaceLog propertiesAssignment(String[] item) throws Exception{
//        // 获取目标类class
//        Class<TlVacuumFurnaceLog> clazz = TlVacuumFurnaceLog.class;
//        // 实例化
//        TlVacuumFurnaceLog tlVacuumFurnaceLog = clazz.newInstance();
//
//        // 获取对象全部属性
//        Field[] fields = clazz.getDeclaredFields();
//        // 循环遍历 当前行数据的列数
//        for (int i = 0; i < item.length; i++) {
//            // 获取方法名
//            String methodName = "set" + fields[i+1].getName().substring(0,1).toUpperCase() + fields[i+1].getName().substring(1);
//            // 获取Method参数
//            Method method = clazz.getMethod(methodName, fields[i+1].getType());
//            // 判断当前属性是什么类型的,将数据进行类型转换
//            if ("Integer".equals(fields[i+1].getType().getSimpleName())){
//                method.invoke(tlVacuumFurnaceLog,Integer.parseInt(item[i]));
//            } else if ("BigDecimal".equals(fields[i+1].getType().getSimpleName())){
//                method.invoke(tlVacuumFurnaceLog, new BigDecimal(item[i]));
//            } else if ("Short".equals(fields[i+1].getType().getSimpleName())){
//                method.invoke(tlVacuumFurnaceLog,Short.valueOf(item[i]));
//            } else if ("Double".equals(fields[i+1].getType().getSimpleName())){
//                method.invoke(tlVacuumFurnaceLog,Double.valueOf(item[i]));
//            } else if ("Byte".equals(fields[i+1].getType().getSimpleName())){
//                method.invoke(tlVacuumFurnaceLog,Byte.valueOf(item[i]));
//            } else if ("String".equals(fields[i+1].getType().getSimpleName())){
//                method.invoke(tlVacuumFurnaceLog,item[i]);
//            }
//
//        }
//
//        return tlVacuumFurnaceLog;
//    }
    /**
     * 核实数据
     */
    @PostMapping("test12")
    public void test12() throws IOException {
        List<String> list = new ArrayList<>();
        File file = new File("C:\\data\\历史个例");
        File[] array = file.listFiles();
        for (int i = 0; i < array.length; i++) {
            if (array[i].isFile()) {
                String res = array[i].getPath();
                list.add(res);
            } else if (array[i].isDirectory()) {
                list.addAll(getFile(array[i].getPath()));
            }
        }

        for (String s : list) {
            if (s.contains("excel1min")) {
                System.out.println(s);
            }

        }
        for (String s : list) {
            BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(s), "GBK"));
            // 循环每行数据
            if (s.contains("excel1min")) {
                int sCount = 0;
                while (reader.readLine() != null) {
                    sCount++;
                }
                System.out.println(sCount);
            }

        }
    }

===========================

@Override
@Transactional(rollbackFor = Exception.class)
public void saveBatch10(List<TlVacuumFurnaceLog> list) {
    long s = System.currentTimeMillis();
    int insertLength = list.size();
    int i = 0;
    while (insertLength > 600) {
        warnMapper.saveBatch10(list.subList(i, i + 600));
        i = i + 600;
        insertLength = insertLength - 600;
    }
    if (insertLength > 0) {
        warnMapper.saveBatch10(list.subList(i, i + insertLength));
    }
    long e = System.currentTimeMillis();
    log.warn("十分钟新增数据耗时:"+(e-s)+"ms");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值