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無關了