excel导入数据库java
package com.javen.excel;
import java.util.List;
import com.javen.db.DBhepler;
import com.javen.entity.StuEntity;
import com.javen.service.StuService;
/**
* @author Javen
* @Email [email protected]
*
*/
public class TestExcelToDb {
public static void main(String[] args) {
//得到表格中所有的数据
List<StuEntity> listExcel=StuService.getAllByExcel("d://book.xls");
/*//得到数据库表中所有的数据
List<StuEntity> listDb=StuService.getAllByDb();*/
DBhepler db=new DBhepler();
for (StuEntity stuEntity : listExcel) {
int id=stuEntity.getId();
if (!StuService.isExist(id)) {
//不存在就添加
String sql="insert into stu (name,sex,num) values(?,?,?)";
String[] str=new String[]{stuEntity.getName(),stuEntity.getSex(),stuEntity.getNum()+""};
db.AddU(sql, str);
}else {
//存在就更新
String sql="update stu set name=?,sex=?,num=? where id=?";
String[] str=new String[]{stuEntity.getName(),stuEntity.getSex(),stuEntity.getNum()+"",id+""};
db.AddU(sql, str);
}
}
}
}
2. java多线程进行大批量excel数据导入实现方案
导入大批量Excel数据到其他平台时,选择Java作为开发语言并非最佳选项,通常公司内使用的如SQL Server更适合处理Excel数据。访问Excel数据的方法有几种,具体选择取决于性能需求和业务场景。
方法一:使用JExcel API。此方法直接操作Excel文件,适合数据量不大且对性能要求不高的场景。在多线程导入时,可将数据分类分块,每个线程处理一块数据,提升导入效率。
方法二:将Excel数据转换为CSV格式,再导入到目标平台。这种方法相对方法一在性能上有所提升,同时减少了对Java库的依赖。同样在多线程环境下,可以实现数据分块导入,提高处理速度。
方法三:使用第三方库如Apache POI,实现更为复杂的数据操作和转换。这种方法灵活性强,适用于处理大量数据和复杂业务逻辑。在多线程导入时,数据分块处理也是关键策略,以优化性能。
从业务实现的角度考虑,如果导入操作是频繁需求,建议优先选择方法一或方法二。引入额外的转换工作虽增加了开发工作量,但在性能和稳定性方面能提供更好的支持。在多线程环境下,合理数据分块策略是关键,确保每个线程处理的数据量适中,避免资源浪费,提高导入效率。
3. java通过poi把excel文件导入mysql数据库报错
java通过poi把excel文件导入mysql数据库报错是因为excel中的数据类型要跟mysql中的数据类型和长度对应,否则类型转换异常是最常见的。所以插入到mysql数据库的时候需要做类型检查。
1、Excel中的测试数据:
4. java中怎么把excel导入数据库
1、利用Excel第三方工具,将Excel文件读取到内存中。使用最简单,方便的工具是apache的poi工具包,自己网上下载http://poi.apache.org/,使用方法网上一搜一大片。
2、如果是对于特别大的excel(大于20M的话),简单的读取方法就容易内存溢出了,需要采用流式读取的方式,参考http://poi.apache.org/spreadsheet/how-to.html#xssf_sax_api
3、将已读入内存的Excel数据,整理成写数据库的数据结构,然后插入数据库。这部分工作应该不用介绍了,就是基本的数据库操作方法,与excel无关了