包com.imodule.dataImport.dataImport.main;
导入java.io.File;
导入java.io.FileInputStream;
导入java.io.Serializable;
导入java.sql.Connection;
导入java.sql.DriverManager;
导入java.sql.PreparedStatement;
导入java.sql.SQLException;
导入java.text.DateFormat;
导入java.text.SimpleDateFormat;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Date;
导入org.apache.commons.lang.StringUtils;
导入org.apache.poi.ss.usermodel.CellType;
导入org.apache.poi.ss.usermodel.Row;
导入org.apache.poi.ss.usermodel.Sheet;
导入org.apache.poi.ss.usermodel.Workbook;
导入org.apache.poi.ss.usermodel.WorkbookFactory;
公共类ExecuteDataExcelToOracle {
public static void main(String [] args){
尝试{
列出\ lt;数据>数据= loadExcel(" C:/Users/xxxx/Desktop/aa.xlsx");//需要更换
batchInsert(数据);
的
} catch(Exception e){
e.printStackTrace();
}
}
的
的
公共静态列表\ lt;数据> loadExcel(字符串文件路径)抛出异常{
文件文件=新文件(文件路径);
工作簿wb = WorkbookFactory.create(新的FileInputStream(文件));
工作表工作表= wb.getSheetAt(0);
列出\ lt;数据> datas = new ArrayList \\ ult26; \ gt; ();//将数据逐行添加到集合中作为插入数据的输入参数
行row = null;
for(int i = 1; i \\ = sheet.getLastRowNum(); i ++){
System.out.println(" i =" + i);
行= sheet.getRow(i);
if(row == null || StringUtils.isEmpty(row.getCell(0).getStringCellValue())){
继续;
}
数据数据=新的ExecuteDataExcelToOracle()。新数据 ();
data.setStr1(row.getCell(0)== null?"":row.getCell(0).getStringCellValue());
data.setStr2(row.getCell(1)== null?"":row.getCell(1).getStringCellValue());
data.setStr3(row.getCell(2)== null?"":row.getCell(2).getStringCellValue());
data.setStr4(row.getCell(3)== null?"":row.getCell(3).getStringCellValue());
data.setStr5(row.getCell(4)== null?"":row.getCell(4).getStringCellValue());
data.setStr6(row.getCell(5)== null?"":row.getCell(5).getStringCellValue());
的
//row.getCell(5).setCellType(CellType.STRING);
如果(row.getCell(6)== null){
data.setStr7("");
}其他{
日期d =(日期)row.getCell(6).getDateCellValue();
DateFormat formater = new SimpleDateFormat(" yyyy-MM-dd HH:mm:ss");
字符串日期= formater.format(d);
data.setStr7(date);
}
的
data.setStr8(row.getCell(7)== null?"":row.getCell(7).getStringCellValue());
data.setStr9(row.getCell(8)== null?"":row.getCell(8).getStringCellValue());
data.setStr10(row.getCell(9)== null?"":row.getCell(9).getStringCellValue());
的
datas.add(数据);
的
}
返回数据;
}
的
的
public static void batchInsert(List \ lt; Data \ gts datas){
long startTime = System.currentTimeMillis();
连接conn = null;
尝试{
Class.forName(" oracle.jdbc.driver.OracleDriver");//如果是oracle,则不需要替换;如果是mysql,则需要替换
conn = DriverManager.getConnection(" jdbc:oracle:thin:@ 10.11.22.33:1521:demo"," root"," 111");//需要更换
conn.setAutoCommit(false);
PreparedStatement stmt = conn.prepareStatement("将INSERT插入temp_user_info VALUES(?,?,?,?,?,?,?,?,?,?,?)");//需要更换
的
//System.out.println("数据大小:" + datas.size());
int num = 0;
对于(数据v:数据){
num ++;
stmt.setString(1,v.getStr1());
stmt.setString(2,v.getStr2());
stmt.setString(3,v.getStr3());
stmt.setString(4,v.getStr4());
stmt.setString(5,v.getStr5());
//stmt.setString(6,v.getStr6());
stmt.setString(6,v.getStr6());
stmt.setString(7,v.getStr7());
stmt.setString(8,v.getStr8());
stmt.setString(9,v.getStr9());
stmt.setString(10,v.getStr10());
stmt.addBatch();
//每50,000个,提交一次
如果(数字> 50000){
stmt.executeBatch();
conn.commit();
num = 0;
}
}
stmt.executeBatch();
conn.commit();
} catch(Exception e){
e.printStackTrace();
尝试{
conn.rollback();
} catch(SQLException e1){
e1.printStackTrace();
}
}最后{
尝试{
conn.close();
} catch(SQLException e){
e.printStackTrace();
}
long endTime = System.currentTimeMillis();
System.out.println("方法执行时间:" +(endTime-startTime)+" ms");
}
}
的
的
类Data实现Serializable {
私有静态最终长serialVersionUID = 1L;
的
私有字符串str1;
私有字符串str2;
私有字符串str3;
私有字符串str4;
私有字符串str5;
私有字符串str6;
私有字符串str7;
私有字符串str8;
私有字符串str9;
私有字符串str10;
公共字符串getStr7(){
返回str7;
}
public void setStr7(字符串str7){
this.str7 = str7;
}
公共字符串getStr8(){
返回str8;
}
public void setStr8(字符串str8){
this.str8 = str8;
}
公共字符串getStr9(){
返回str9;
}
public void setStr9(字符串str9){
this.str9 = str9;
}
公共字符串getStr10(){
返回str10;
}
public void setStr10(字符串str10){
this.str10 = str10;
}
公共字符串getStr1(){
返回str1;
}
public void setStr1(字符串str1){
this.str1 = str1;
}
公共字符串getStr2(){
返回str2;
}
public void setStr2(字符串str2){
this.str2 = str2;
}
公共字符串getStr3(){
返回str3;
}
public void setStr3(字符串str3){
this.str3 = str3;
}
公共字符串getStr4(){
返回str4;
}
public void setStr4(字符串str4){
this.str4 = str4;
}
公共字符串getStr5(){
返回str5;
}
public void setStr5(字符串str5){
this.str5 = str5;
}
公共字符串getStr6(){
返回str6;
}
public void setStr6(字符串str6){
this.str6 = str6;
}
的
}
}