在将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. GUI编程笔记(java)05:GUI事件监听机制原理和举例说明

    1.事件监听机制:       A:事件源          事件发生的地方       B:事件             就是要发生的事情       C:事件处理       就是针对发生的事情做 ...

  2. SQL Server 2005恢复数据库详细图文教程

    不少需要用到sql2005的程序,有很多新手还是会操作,这里写个详细的图文教程送个菜鸟们,高手请飘过.适用于独立主机的朋友使用,如果你还没安装,请按照这个教程来安装 SQL Server 2005图文 ...

  3. 【Android】数据库的简单应用——增删改查的操作

    还记得getReadableDatabase()和getWritableDatabase()方法吧?在调用它们的时候会返回一个SQLiteDatabase对象,借助这个对象就可以进行CURD(Crea ...

  4. Python实战:Python爬虫学习教程,获取电影排行榜

    Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习 ...

  5. 记录平时code点滴,这次是通过一张充满异样字符的表,对数据表中的每一列进行清理,比double quotation的issue难多了!

    需要提供对象: 一张需要被替换字符的表. 通过游标结合动态SQL对某一张特定表的所有列进行更新,主要是对其列值的异常字符处理. dbo.Characters_need_to_be_replaced c ...

  6. JS获取页面上所有input

    for (var i = 0; i < document.getElementsByTagName("input").length; i++) { if (document. ...

  7. Java文件File操作一:文件的创建和删除

    一.简述 File 文件类,主要对文件进行相关操作.常用的File操作有:文件(夹)的创建.文件(夹)的删除,文件的读入和下载(复制)等: 二.文件(夹)的创建和删除 1.创建过程 实例: //cre ...

  8. xcode 7种使用coredata遇到 Class not found, using default NSManagedObject instead.问题

    CoreData: warning: Unable to load class named 'CoreDataSwift2_2.Bowtie' for entity 'Bowtie'. Class n ...

  9. IOS-UI- UIScrollView 滚动视图(1)

    滚动视图多个页面实现的原理 滚动视图位置不变 内容的位置发生改变. 滚动视图的运用1.分页查看图片 2.查看大图片 3.当内容过多需要一个页面显示,如:注册,修改个人信息等等4.当不希望用户感觉咱们的 ...

  10. 【html】【3】html标签列表

    必看参考: http://www.divcss5.com/html/h323.shtml http://www.w3school.com.cn/tags/tag_html.asp 常用: <ht ...