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. 【问题与解决】showModalDialog is not defined 的解决方案

    背景: showModalDialog 是比较老的方法了,有些浏览器不再支持弹出模态窗口了. 比如说谷歌浏览就不再支持了,有文章说明如下: Chrome’s Lack of Support for s ...

  2. SSE图像算法优化系列七:基于SSE实现的极速的矩形核腐蚀和膨胀(最大值和最小值)算法。

    因未测试其他作者的算法时间和效率,本文不敢自称是最快的,但是速度也可以肯定说是相当快的,在一台I5机器上占用单核的资源处理 3000 * 2000的灰度数据用时约 20ms,并且算法和核心的大小是无关 ...

  3. PowerShe 消息提示框测试

    1. 使用powerShell 弹出一个简单的消息框,代码如下,创建test.ps1脚本文件. $ConfirmPreference = 'None' $ws = New-Object -ComObj ...

  4. BitBlt 函数 详解, StretchBlt、SetStretchBltMode、SetBrushOrgEx 按句柄截图、直接截取缩略图

    BitBlt 该函数对指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境. 函数原型 [DllImport("gdi32.dll")] publi ...

  5. golang 小例子

    import ( "bytes" "encoding/binary" "encoding/gob" "fmt" ) fu ...

  6. fastcgi php-cgi与php-fpm区别和之间的关系

    关于FastCGI.php-cgi.php-fpm的区别是什么,各自有什么用途,以及相互间的关系是什么,查阅相关资料,可谓是众说纷纭,莫衷一是: 说法一:fastcgi是一个协议,php-fpm实现了 ...

  7. 关于java多线程中异常捕获的理解

    在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked e ...

  8. 开源文件服务器file-service介绍

    file-service 一个基于ASP.NET Core的可伸缩.通用的文件服务器. 通常后端项目可能会有头像.图片.音频.视频等上传/下载需求,这些需求都可以抽象为文件服务. 功能特点 支持Lin ...

  9. Windows上使用Vagrant打造Laravel Homestead可协同跨平台开发环境

    1.简介 Laravel 致力于让整个 PHP 开发过程变得让人愉悦,包括本地开发环境,为此官方为我们提供了一整套本地开发环境 —— Laravel Homestead. Laravel Homest ...

  10. CobaltStrike3.12/13 破解

    更新3.13破解版 链接: https://pan.baidu.com/s/14e0tpVPzUhiAhYU2_jvBag 提取码: d9uf MacOS客户端: 链接: https://pan.ba ...