public void importIndexHistoryByCsv(String fileName) {
logger.info("开始获取Csv文件导入到数据库,csv文件名为:" + fileName);
File file = new File(fileName);
cnAbsHistoryDataService.importIndexHistoryByCsv(file); }
//指数历史数据导入
@Override
public void importIndexHistoryByCsv(File file) {
List<String> csvList = transCsvToList(file);
List<AbsSecurityEntity> absSecurityList = new ArrayList<AbsSecurityEntity>();
List<AbsSecuritySummaryEntity> summaryList = new ArrayList<AbsSecuritySummaryEntity>(); int j = 0;
int i = 0;
try {
List<AbsSecurityEntity> totalSecurityList = new ArrayList<>();
for (j = 0; j < csvList.size(); j++) {
String[] lineDate = csvList.get(j).split(",");
AbsSecurityEntity security = new AbsSecurityEntity();
AbsSecuritySummaryEntity summary = new AbsSecuritySummaryEntity();
i = -1;
security.setSecurityId(Long.valueOf(lineDate[++i]));
summary.setNoteId(Long.valueOf(lineDate[i]));
security.setSecurityCode(lineDate[++i]);
summary.setSecurityCode(lineDate[i]);
security.setSecurityName(lineDate[++i]);
summary.setSecurityName(lineDate[i]);
security.setTransferDate(DateUtil.isDate(lineDate[++i]));
summary.setTransferDate(DateUtil.isDate(lineDate[i])); summary.setPrice(lineDate[++i] == null ? null : Double.valueOf((String) lineDate[i]));
summary.setYield(lineDate[++i] == null ? null : Double.valueOf((String) lineDate[i]));
summary.setWal(lineDate[++i] == null ? null : Double.valueOf((String) lineDate[i]));
summary.setBeginBalance(lineDate[++i] == null ? null : Double.valueOf((String) lineDate[i]));
summary.setPrincipalPaid(lineDate[++i] == null ? null : Double.valueOf((String) lineDate[i]));
summary.setInterestPaid(lineDate[++i] == null ? null : Double.valueOf((String) lineDate[i]));
++i;
summary.setNotional(lineDate[++i] == null ? null : Double.valueOf((String) lineDate[i]));
++i;
summary.setRating(lineDate[++i]);
absSecurityList.add(security);
summaryList.add(summary);
//300条批量导入
if (j == csvList.size() - 1 || absSecurityList.size() >= 300) {
totalSecurityList.addAll(absSecurityList);
if (totalSecurityList.size() > 2000) {
totalSecurityList = totalSecurityList.stream().sorted(Comparator.comparing(AbsSecurityEntity::getTransferDate)).collect(Collectors.toList());
totalSecurityList.subList(1, totalSecurityList.size() - 1000).clear();
} for (AbsSecurityEntity entity : absSecurityList) {
entity.setType("default");
}
absSecurityDao.batchAddAbsSecurity(absSecurityList);
absSecuritySummaryDao.batchAddAbsSecuritySummary(summaryList);
absSecurityList.clear();
summaryList.clear();
}
}
} catch (Exception e) {
logger.error("指数历史数据都 error :" + e);
throw new BizException("第: " + (j + 2) + "行 , : " + i + " 列,数据格式有误");
}
}
public static List<String> transCsvToList(File file) {
List<String> dataList = new ArrayList<String>();
BufferedReader br = null;
try {
InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "UTF-8");
br = new BufferedReader(new BufferedReader(isr));
// br = new BufferedReader(new FileReader(file));
String line = "";
while ((line = br.readLine()) != null) {
dataList.add(line);
}
} catch (Exception e) {
} finally {
if (br != null) {
try {
br.close();
br = null;
} catch (IOException e) {
e.printStackTrace();
}
}
}
List<String> subList = dataList.subList(1, dataList.size());
return subList;
}

批量数据的Excel导入的更多相关文章

  1. 10w行级别数据的Excel导入优化记录

    需求说明 项目中有一个 Excel 导入的需求:缴费记录导入 由实施 / 用户 将别的系统的数据填入我们系统中的 Excel 模板,应用将文件内容读取.校对.转换之后产生欠费数据.票据.票据详情并存储 ...

  2. 销售合同金额数据从Excel导入

    一.业务需求 1.新增了销售合同金额的字段,但是老数据没有这个字段:所以销售合同金额从销售合同附件的各品种金额之和. 2.制作好excel字段模板,将此模板发送给销售业务部门来统计并完成excel表格 ...

  3. 利用PL/SQL Developer工具导出数据到excel,导入excel数据到表

    使用PL/SQL Developer工具. 导出: 1.执行select 语句查询出需要导出的数据. 2.在数据列表中右键,选择save results.保存为.csv文件,然后已excel方式打开就 ...

  4. VBA: 怎样批量数据从Excel派出到Visio

    上周派到了个case, 是批量从Excel导出数据导Visio每个图形中. 花了些时间实现了这个功能. 原理如下: 打开Excel 新建/打开表单 指向所选择的表单 遍历所在列的所有数据 打开Visi ...

  5. SQL server 导入数据 (excel导入到SQL server数据库)

    打开数据库SQL server ,右键数据库,任务,导入数据 点击下一步 选择数据源类型 选择路径,点击下一步 选择将要生成的类型 选择登陆方式 选中,点击下一步 点击编辑映射可以修改将要生成的表,点 ...

  6. ABAP-2-会计凭证批量数据导入本地ACCESS

    ABAP-1-会计凭证批量数据导入本地ACCESS 上一版本出现问题: A.若TXT数据条目超过800万(大概1.3G),则将TXT导入ACCESS过程不成功,ACCESS数据表为空.(Access单 ...

  7. ABAP-1-会计凭证批量数据导入本地ACCESS

    公司会计凭证导入ACCESS数据库,需要发送给审计,原先的方案是采用DEPHI开发的功能(调用函数获取会计凭证信息,然后INSERT到ACCESS数据表),运行速度非常慢,业务方要求对该功能进行优化, ...

  8. 使用PHPExcel实现数据批量导出为excel表格

    首先需要下载PHPExecel类文件,帮助文档可以参考PHPExcel中文帮助手册|PHPExcel使用方法. 下面直接上例子,是我自己写的一个简单的批量导出数据为excel的例子 前台页面 比较简单 ...

  9. .net实现与excel的数据交互、导入导出

    应该说,一套成熟的基于web的管理系统,与用户做好的excel表格进行数据交互是一个不可或缺的功能,毕竟,一切以方便客(jin)户(qian)为宗旨. 本人之前从事PHP的开发工作,熟悉PHP的都应该 ...

随机推荐

  1. $gopath not set的解决办法

    执行安装 sudo go get github.com/nsf/gocode 提示: cannot download, $GOPATH not set. For more details see: g ...

  2. 积木式编程——自制app点灯

    技术:51单片机.串口.蓝牙.积木式编程   概述 这里简单入门了积木式编程,做了个简易APP用来开灯关灯,当然你可以继续添加内容,可以做智能家居.遥控汽车和环境监控等等. 详细 代码下载:http: ...

  3. 信用评分及模型原理解析(以P2P网贷为例)

    本博文将针对消费贷款领域的信用评分及其模型进行相关研究探讨.虽然人人都可以通过对借款方在Lending Club(国外最大的P2P网站)和Prosper上的历史借贷数据进行分析,但我相信,了解消费信贷 ...

  4. 【PHP】解析PHP中的变量

    php是一门脚本语言,同时php中的变量类型也是弱语言类型,这和javascript非常相似.笔者在这里说一说PHP中的变量知识点. 1. 引用类型变量 看下面的案例: <?php class ...

  5. ORACLE 存储函数

    前奏: 必要的概念: ORACLE 提供能够把 PL/SQL 程序存储在数据库中.并能够在不论什么地方来运行它.这样就叫存储过 程或函数. 过程和函数统称为 PL/SQL 子程序.他们是被命名的 PL ...

  6. Python的虚拟机安装已经如何配置Scrapy for Mac

    时间:2018年2月21日 因为时间问题,以下笔记就粗略记录.仅作为个人笔记为用 安装virtualenv和virtualenvwrapper 如何安装的细节下面这篇也有介绍,包括如何使用切换虚拟机也 ...

  7. Unity应用架构设计(3)——构建View和ViewModel的生命周期

    对于一个View而言,本质上是一个MonoBehaviour.它本身就具备生命周期这个概念,比如,Awake,Start,Update,OnDestory等.这些是非常好的方法,可以让开发者在各个阶段 ...

  8. zsh+on-my-zsh配置教程指南(程序员必备)

    本文以CentOS 7/Mac 为例,介绍zsh的配置使用教程. 准备 查看当前环境shell echo $SHELL <!-- more --> 查看系统自带哪些shell cat /e ...

  9. Linux报swap空间占用过高,但物理内存还有空余

    收到报警,swap空间占用过高,登录到系统查看内存使用详情,看到物理内存还有很多未使用 问题分析 Swap配置对性能的影响分配太多的Swap空间会浪费磁盘空间,而Swap空间太少,则系统会发生错误.如 ...

  10. ES容易忽视的集群配置

    一 前言 目前生产系统由Solr转ES了,在这边就记录下在使用过程中容易忽视的配置吧,其实我也是才用,如果有什么错误的地方,多指正. 二.配置 1.ES的段合并是限速设置 默认是20MB/s ,如果是 ...