Hibernate+jxl+excel导入数据库
在将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导入数据库的更多相关文章
- 记录-java(jxl) Excel导入数据库
本内容主要包括(文件上传.excel2003数据导入数据库)excel导入数据库功能需要jxl jar包支持 下面是文件上传的前端测试代码 <%@ page language="ja ...
- Java实现将Excel导入数据库和从数据库中导出为Excel
实现的功能: 用Java实现从Excel导入数据库,如果存在就更新 将数据库中的数据导出为Excel 1.添加jxl.jar mysql-connector-java.1.7-bin.jar包到项目的 ...
- excel 导入数据库 / SSIS 中 excel data source --64位excel 版本不支持-- solution
当本地安装的excel(2013版) 是64-bit时:出现的以下两种错误 解决: 1. excel 导入数据库 , 如果文件是2007则会出现:“The 'Microsoft.ACE.OLEDB.1 ...
- ASP.NET 将Excel导入数据库
将Excel导入数据库大致流程: Excel数据->DataSet->数据库 需要做的准备:1.FileUpload控件一个,按钮一个,如果需要即时显示那么GridView或DataGr ...
- Excel导入数据库百万级数据瞬间插入
Excel导入数据库百万级数据瞬间插入 百万级别,瞬间,有点吊哇
- java jxl excel 导入导出的 总结(建立超链接,以及目录sheet的索引)
最近项目要一个批量导出功能,而且要生成一个单独的sheet页,最后后面所有sheet的索引,并且可以点击进入连接.网上搜索了一下,找到一个方法,同时把相关的excel导入导出操作记录一下!以便以后使用 ...
- 使用thinkphp框架实现Excel导入数据库
之前讲过php实现Excel导出数据库的随笔,链接:https://www.cnblogs.com/nuanai/p/6727711.html 之前的项目用到较多的就是Excel导出,现在用到了Exc ...
- Excel导入数据库(三)——SqlBulkCopy
上篇博客中介绍了批量导入数据库的方法:下面介绍一下批量导入过程的核心——SqlBulkCopy类. 下面先介绍一些原理性的东西:SQLBulkCopy类,通常用于数据库之间大批量的数据传递.即使表结构 ...
- 第三次作业---excel导入数据库及显示(2)
发现第一次做的功能有点复杂,不能理解.而且第一次的想法是在页面上上传文件,连接并导入到数据库,并在页面上显示.后来才看到要求是直接在本地将数据导入数据库就行了,然后显示.所以才出现了一堆看不懂也解决不 ...
随机推荐
- 用标准版的Eclipse搭建PHP环境
用标准版的Eclipse搭建PHP环境 ——@梁WP 摘要:用标准版的Eclipse搭建PHP环境. 一.下载Eclipse的PHP插件 百度搜索phpeclipse,看到某条结果是带有SourceF ...
- idea集成svn插件
1.需要在机器上安装一个SVN客户端命令行程序,可以到这里下载对应的安装程序:http://subversion.apache.org/packages.html#windows 我选择的是torto ...
- 服务器端PHP多进程编程
待更新 版权声明:本文为博主原创文章,未经博主允许不得转载.
- (转)C# NameValueCollection集合
1.NameValueCollection类集合是基于 NameObjectCollectionBase 类. 但与 NameObjectCollectionBase 不同,该类在一个键下存储多个字符 ...
- [Mime] MimeEntity--MimeEntity Mime实体帮助类 (转载)
点击下载 MimeEntity.rar 这个类是关于Mime实体的类看下面代码吧 /// <summary> /// 类说明:Assistant /// 编 码 人:苏飞 /// 联系方式 ...
- mvc性能优化
mvc性能优化 (1)移动设备卡顿问题 -1请求方式 在mvc中GET请求有问题,出现错误 在MVC中在进行GET请求获取JSON数据时,需要进行如下设置: return Json("&qu ...
- 通过javascript,使用struts2的ognl获取JavaBean的属性.
1)在Action中,声明一个Lock对象,并生成好setter/getter,在Action调用方法中(这里是findOnMap,需要先调用setLock方法设置好信息) private Lock ...
- python文件操作汇总
1.创建文件 f = open(filename,'w+')
- iOS textfield实现一行的数字限制,超出进行弹框
步骤一:添加textfield协议‘ @interface LsGeXingQianMingVC ()<UITextFieldDelegate> 步骤2:设置代理 _GeXingQianM ...
- IE6 for WIN8
分享一款微软原生内核的Ie6,绿色免安装,无广告,无插件. 点击下载IE6 for WIN8 来源:子涵的博客