在将excel中的10w行数据导入数据库中时,总发生内存溢出,一开始使用的Spring+Hibernate;不知如何使用批处理,后来只是用Hibernate,10W行数据几分钟完成,

代码如下:

public static void main(String[] args) {
  // TODO Auto-generated method stub

String filePath = "F:/研究生-数据挖掘/中文词库";

try {
   Session session = HibernateSessionFactory.getSession();
   Transaction ts = session.beginTransaction();
   // 加载excel文件
   File file=new File(filePath);
   String[] list=file.list();
   for (int i=0;i<list.length;i++){
    String filePath1=filePath+"/"+list[i];
   InputStream fs = new FileInputStream(filePath1);
   // 得到 workbook
   Workbook workBook = Workbook.getWorkbook(fs);
   // 取得sheet,如果你的workbook里有多个sheet 可以利用 wb.getSheets()方法来得到所有的。
   // getSheets() 方法返回 Sheet[] 数组 然后利用数组来操作。就是多次循环的事。
   Sheet sheet = workBook.getSheet(0);// 这里只取得第一个sheet的值,默认从0开始
   System.out.println(sheet.getColumns());// 查看sheet的列
   System.out.println(sheet.getRows());// 查看sheet的行
   Cell cell = null;// 就是单个单元格
   // 开始循环,取得 cell 里的内容
   for (int j = 1; j < sheet.getRows(); j++) {

中文词库 s = new 中文词库();
    String string = sheet.getCell(0, j).getContents();// 第几列第几行的数据
    //System.out.print(string);

double xmlid = Double.parseDouble(string);

s.setXmlid(xmlid);
    s.setWord(sheet.getCell(1, j).getContents());
    s.set名词(sheet.getCell(2, j).getContents());
    s.set动词(sheet.getCell(3, j).getContents());
    s.set形容词(sheet.getCell(4, j).getContents());
    s.set副词(sheet.getCell(5, j).getContents());
    s.set量词(sheet.getCell(6, j).getContents());
    s.set拟声词(sheet.getCell(7, j).getContents());
    s.set结构助词(sheet.getCell(8, j).getContents());
    s.set助词(sheet.getCell(9, j).getContents());
    s.set并列连词(sheet.getCell(10, j).getContents());
    s.set连词(sheet.getCell(11, j).getContents());
    s.set介词(sheet.getCell(12, j).getContents());
    s.set代词(sheet.getCell(13, j).getContents());
    s.set疑问词(sheet.getCell(14, j).getContents());
    s.set数词(sheet.getCell(14, j).getContents());
    s.set成语(sheet.getCell(16, j).getContents());
    session.save(s);
    if (j % 50 == 0) {
     session.flush();
     session.clear();
    }

}
   ts.commit();
   HibernateSessionFactory.closeSession();
   workBook.close();// 记得关闭
   fs.close();

}
  }catch (Exception e) {
   e.printStackTrace();
  }
  // TODO Auto-generated method stub

}

}

导入的jar包 jxl.jar

Hibernate+jxl+excel导入数据库的更多相关文章

  1. 记录-java(jxl) Excel导入数据库

    本内容主要包括(文件上传.excel2003数据导入数据库)excel导入数据库功能需要jxl  jar包支持 下面是文件上传的前端测试代码 <%@ page language="ja ...

  2. Java实现将Excel导入数据库和从数据库中导出为Excel

    实现的功能: 用Java实现从Excel导入数据库,如果存在就更新 将数据库中的数据导出为Excel 1.添加jxl.jar mysql-connector-java.1.7-bin.jar包到项目的 ...

  3. excel 导入数据库 / SSIS 中 excel data source --64位excel 版本不支持-- solution

    当本地安装的excel(2013版) 是64-bit时:出现的以下两种错误 解决: 1. excel 导入数据库 , 如果文件是2007则会出现:“The 'Microsoft.ACE.OLEDB.1 ...

  4. ASP.NET 将Excel导入数据库

    将Excel导入数据库大致流程:  Excel数据->DataSet->数据库 需要做的准备:1.FileUpload控件一个,按钮一个,如果需要即时显示那么GridView或DataGr ...

  5. Excel导入数据库百万级数据瞬间插入

    Excel导入数据库百万级数据瞬间插入 百万级别,瞬间,有点吊哇

  6. java jxl excel 导入导出的 总结(建立超链接,以及目录sheet的索引)

    最近项目要一个批量导出功能,而且要生成一个单独的sheet页,最后后面所有sheet的索引,并且可以点击进入连接.网上搜索了一下,找到一个方法,同时把相关的excel导入导出操作记录一下!以便以后使用 ...

  7. 使用thinkphp框架实现Excel导入数据库

    之前讲过php实现Excel导出数据库的随笔,链接:https://www.cnblogs.com/nuanai/p/6727711.html 之前的项目用到较多的就是Excel导出,现在用到了Exc ...

  8. Excel导入数据库(三)——SqlBulkCopy

    上篇博客中介绍了批量导入数据库的方法:下面介绍一下批量导入过程的核心——SqlBulkCopy类. 下面先介绍一些原理性的东西:SQLBulkCopy类,通常用于数据库之间大批量的数据传递.即使表结构 ...

  9. 第三次作业---excel导入数据库及显示(2)

    发现第一次做的功能有点复杂,不能理解.而且第一次的想法是在页面上上传文件,连接并导入到数据库,并在页面上显示.后来才看到要求是直接在本地将数据导入数据库就行了,然后显示.所以才出现了一堆看不懂也解决不 ...

随机推荐

  1. value must be omitted for boolean attributes

    jsx文件中 html5一些标签的属性是boolean的,<div hidden="true">是不被允许的,要改成<div hidden>或<div ...

  2. Windows Server 2008 R2 安装及配置指南

    一.安装需求: 1. 硬件需求条件 硬件 需求 处理器 最低:1.4 GHz(x64处理器) 注意:Windows Server 2008 for Itanium-Based Systems 版本需要 ...

  3. 使用Github建立个人博客

    总的说来 这个当有node.js 和gitbub的账号后,搭建一个自己的博客,想想还是挺美的事! 由于要把整个流程说清楚 估计lz还没这个实力,所以都是继承前辈们的经验,自己再添加一点遇到的问题和解决 ...

  4. iOS Core Animation学习总结(1)--CALayer常用属性

    图层是core animation的基础, UIView之所以能显示在屏幕上,靠的是其内部的这个图层,即每个UIView 都有 CALayer,可通过UIView.layer或者[UIView lay ...

  5. javascript之事件详解2

    1.事件对象: 在触发DOM事件的时候都会产生一个对象. 2.事件对象event: (1).type:获取事件类型 (2).target:获取事件目标 (3).stopPropagation():阻止 ...

  6. highcharts时间图

    这篇文章适合对highcharts已经有一定了解的猿友. 前两天想用highcharts做一个时间图,但是时间轴(x轴)的时间坐标并不是等间隔的,之前一直采用的方法是把时间做成等间隔的,然后没有数据的 ...

  7. 数据库(学习整理)----2--关于Oracle用户权限的授权和收权

    知识点: 1.Oracle数据库中所用的用户等级是平级的!只是每个用户的权限不同而已! 2.在一个用户登录后,可以在自己的登录状态下访问其他用户的数据缓冲区.表.以及表的操作!(只要该用户用权限!) ...

  8. PDF在xp或2003下正常在win7下乱码的问题

    1.先确定当前PDF文件需要字体(在PDF工具打开找到Font字体可以查看具体需要哪些字体). 2.网上下载或者在生成PDF的电脑上把老版本字体拷贝出来然后在win7下安装,当提示已经存在该字体时,直 ...

  9. 从内部剖析C#集合之HashTable

    计划写几篇文章专门介绍HashTable,Dictionary,HashSet,SortedList,List 等集合对象,从内部剖析原理,以便在实际应用中有针对性的选择使用. 这篇文章先介绍Hash ...

  10. 网页登陆校验码C#版代码

    [DefaultProperty("Text")] [ToolboxData("<{0}:ValidateCode runat=server></{0} ...