`
snoopy7713
  • 浏览: 1151954 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

解决Hibernate +jxl将大批量excel导入数据库,内存溢出

    博客分类:
  • java
阅读更多

在将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

 }

}

 

分享到:
评论

相关推荐

    网上银行系统Struts+hibernate+jxl

    其次,Hibernate是Java领域内广泛使用的对象关系映射(ORM)框架,它简化了数据库操作,将数据库操作转化为对Java对象的操作,避免了繁琐的SQL编写。在“网上银行系统”中,Hibernate被用于管理数据持久化,比如用户...

    利用jxl把excel中的数据导入数据库

    标题“利用jxl把excel中的数据导入数据库”指的是使用Java Excel API(jxl)这个库来读取Excel文件中的数据,并将这些数据批量地导入到关系型数据库中。这是一个常见的需求,特别是在处理大量结构化数据时,例如进行...

    [转]java struts2+jxl生成并导出Excel

    Struts2是一个流行的Java web框架,它为开发者提供了一种结构化的方式来构建应用程序,而JXL则是一个Java库,用于读取、写入和修改Excel电子表格文件。这篇博客文章结合了这两个技术,展示了如何在Struts2应用中生成...

    JXL操作EXCEL 数据库导出EXCEL相关文件

    通过结合数据库操作,我们可以方便地将数据库中的数据导出为Excel格式,用于报表生成、数据分析或其他目的。使用JXL,可以实现跨平台的Excel处理,而无需依赖特定的Office软件,提高了开发的灵活性和效率。

    SSH+JXL 下载 Excel 文档

    SSH(Spring、Struts2、Hibernate)是Java领域常见的MVC架构,而JXL是一个流行的Java库,用于读写Excel文件。下面我们将详细探讨这些知识点。 1. **Spring框架**: Spring 是一个开源的Java平台,它简化了企业级...

    JXL、POI实现Excel导入导出

    下面将详细介绍这两个库以及如何利用它们实现Excel的导入导出功能。 ### JXL JXL(Java Excel API)是一个轻量级的Java库,它提供了读取和写入Excel文件的能力,支持97-2003版本的xls格式。JXL的主要特点包括: 1...

    jxl写大文件时会出现内存溢出

    综上所述,JXL写大文件时出现内存溢出的问题可以通过优化代码、选择更适合的库、调整JVM设置等多种方式来解决。开发者应根据项目需求和性能要求选择合适的策略,以确保程序能够高效、稳定地运行。

    JXL(Java操作Excel文件Oracle数据库)

    本篇文章将深入探讨如何利用JXL库在Java环境下操作Excel文件,并将其数据与Oracle数据库进行交互。 首先,JXL库提供了丰富的API,能够方便地对Excel文件进行各种操作。例如,可以创建新的工作簿,添加工作表,设置...

    Struts2+JXL 下载 Excel 文档

    在"Struts2+JXL 下载 Excel 文档"的场景中,开发者通常会创建一个Action,这个Action负责生成Excel文档并提供下载。用户通过浏览器访问特定URL,Struts2框架接收到请求后,会路由到相应的Action。Action内部会利用...

    jxl 实现的数据库导入导出

    使用了hibernate+struts1+spring + MYSql...能够将数据库整张表的数据导出到excel 文件, 也能将excel 的数据导入 到空的 数据库表中。 能够保证导出的数据类型不变。 如要正确运行,必须先执行src 下的backup.sql 脚本

    struts2+jxl导出excel

    同时,合理控制Excel文件的大小,防止内存溢出。 通过这种方式,你可以结合Struts2的控制层和JXL的Excel操作,轻松实现web应用的Excel导出功能。不过,需要注意的是,随着技术的发展,现在有更多现代化的库(如...

    数据库内容导入到Excel jxl.jar包

    数据库内容导入到Excel是数据处理中的常见操作,特别是在数据分析、报表生成或数据迁移时。这里我们关注的是使用Java的一个库——jxl.jar,它允许我们方便地读取和写入Excel文件。jxl库是一个非常实用的工具,尤其...

    使用jxl将数据库的数据导出到Excel

    本篇文章将详细介绍如何利用JXL将数据库的数据导出到Excel。 首先,要使用JXL,你需要在项目中引入其依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;...

    JXL 将内容导入到Excel中

    本教程将深入讲解如何使用JXL库将内容导入到Excel中。 首先,我们需要了解JXL库。JXL是一个开源的Java库,专门用于处理Microsoft Excel文件。它支持读取、写入和修改Excel文件,兼容多种Excel文件格式。JXL提供了...

    Android-Android使用jxl快速导出excel表

    本文将详细探讨如何在Android应用中使用jxl库快速导出Excel表格。 首先,我们需要理解jxl库的基本概念。jxl是一个Java API,它支持Microsoft Excel 97-2004的文件格式(.xls)。通过jxl,我们可以创建新的工作簿、...

    java导入excel到数据库

    在Java编程环境中,将Excel数据导入到数据库是一项常见的任务,特别是在数据处理和分析场景中。以下是对这个主题的详细说明: 1. **配置文件管理上传路径**: 在项目中,通常会创建一个配置文件(如`application....

    jxl 实现excel导入导出

    但作为一款轻量级的解决方案,`jxl`对于简单的Excel操作已经足够强大,且易于理解和使用。 总之,`jxl`库是Java开发者处理Excel文件的一个有力工具,它简化了读取、写入和修改Excel数据的过程,使得在Java应用中...

    jsp+jspsmart上传+poi3.8读取excel2007+jxl读取excel2003

    在给定的标题和描述中,"jsp+jspsmart上传+poi3.8读取excel2007+jxl读取excel2003" 提到了一种结合Java Web技术实现文件上传,并通过不同库解析Excel文件的解决方案。这里我们将详细探讨涉及的各个知识点。 首先,`...

    用JXL读写excel到数据库实例

    使用jxl,读写excel数据进数据库的例子。 需要jxl.jar、poi-2.0-final-20040126.jar、mysql-connector-java-3.0.8-stable-bin.jar、jakarta-poi-1.5.1-final-20020615.jar。

Global site tag (gtag.js) - Google Analytics