在将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. Android(java)学习笔记188:关于构造代码块,构造函数的一道面试题(华为面试题)

    1.源码是: package text; public class TestStaticCon { public static int a = 0; static { a = 10; System.o ...

  2. .NET设计模式(6):原型模式(Prototype Pattern)

    ):原型模式(Prototype Pattern)    );         //使用颜色         string colorName = "red";         C ...

  3. 面向对象 ---Java抽象类

    在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类除了不能实例化对象之外, ...

  4. git 常见问题收集(持续更新中)

    1.问题:在配置完成github上的ssh后如何使用ssh? 答: 1)http方式 url =https://github.com/username/test_repo.git 2)ssh方式:把u ...

  5. 小白偶遇Sublime Text 3

    sublime text3号称神一样的编辑器,主要归功于它丰富的插件所带来的可扩展性.以前曾经抱着玩一玩的心态下载了sublime ,没有插件的sublime 很快被我扔到一边.在用过很多的编辑器后, ...

  6. artDialog.js的使用

    开发项目中用到了artDialog.js,从而专门学习一下如何配置和使用. 一.artDialog是什么 artDialog是一个精巧的web对话框组件,压缩后只有十多KB,并且不依赖其他框架. 二. ...

  7. Python:文件操作

    #!/usr/bin/python3 str1 = input("请输入:") print("你输入的是:",str1) f=open("abc.tx ...

  8. angularjs跨域调取webservice

    1.配置 web.config <webServices> <!--必须添加--> <protocols> <add name="HttpGet&q ...

  9. ES 必备插件的安装

    1. elasticsearch-head插件的安装,非常好的插件 elasticsearch-head是一个elasticsearch的集群管理工具,它是完全由html5编写的独立网页程序,你可以通 ...

  10. 让IE8兼容问题,参考文档bootstrap

    问题:制作的页面基本没啥问题,只有IE8不好使 参考文档:bootstrap官网 方案一 方案二