如何将Excel表格中的数据批量导入到Oracle数据库表中

时间:2022-10-20 13:31:43

工具选择

    数据库 ORACLE11G

    编程语言 JAVA

首先是使用JAVA语言编写一个解析EXCEL文件的小代码,这里需要一个工具JXL.JAR,这是个JAR包,有了它,我们就可以轻松的把EXCEL文件解析

如果要对EXCEL文件进行操作,则需要对EXCEL文件有所了解。

1、我们打开EXCEL文件看到一个一个小格子是单元格,在JXL里面被定义为CELL

2、软件线面,状态栏上面有几个标签,可以在不同标签里进行切换,每个标签对应一个SHEET

3、每一个可编辑的EXCEL文件在JXL里面定义为WORKBOOK

我们的TEXT.XLS里面有两列,第一列为姓名,第二列为性别,共20行。

public class loadEXCEL{
 
     public static Connection con=null;
 
     public static void build(Connection conn) throws BiffException, IOException{
             String filepath="d://test.xls";
             File excelfile = new File(filepath);
             Workbook book = null;
             CallableStatement st = null;
             int rownum;
             String name = null;
             String sex = null;
             try{
                   book = Workbook.getWorkbook(excelfile);
                   Sheet sheet = book.getSheet(0);//工作簿是从0开始的
                   for(rownum=1;rownum<sheet.getRows();rownum++){
                   name = sheet.getCell(0,rownum).getContents().trim();//参数顺序为(列,行)
                   sex = sheet.getCell(1,rownum).getContents().trim();//getContents().trim()是获取单元格内的值并去空格

                   try{
                        st = conn.prepareCall("insert into test_table values (?,?)");//这里是执行插入操作,可以换成别的如UPDATE
                        st.setString(1, name);
                        st.setString(2, sex);
                        st.execute();
                        st.close();
                        System.out.println(""+rownum+"条记录!");
                        }catch (SQLException e) {
                                 e.printStackTrace();
                                 }
                        }
                  }finally{
                       book.close();
                       }
 }
 
 public static  Connection getConnection() throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException{//配置JDBC连接
      String url = "jdbc:oracle:thin:@192.168.212.132:1521:TESTDB";
      Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
      con = DriverManager.getConnection(url, "user", "password");
      return con;
     
  }


 public static void main(String [] arg) throws BiffException, IOException, InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException{
  
          Connection co = loadEXCEL.getConnection();
          co.setAutoCommit(true);
          loadEXCEL.build(co);
          co.close();
          System.out.println("JUST OK!!!");
  
      }
}

如上,红色部分是给像我一样的大老粗提个醒,记得要释放资源。

ST.CLOSE是关闭游标,ORACLE默认游标值为300,如果不关闭,而且数据量超过300的时候,就会报错。

大家可能看到,我的ROWNUM是从1开始,不是必须的,因为我的EXCEL文件第一行是标题,我这里是跳过标题。

别的我不说了,里面用到得FILESQL的包大家自己加上去吧。

代码可以直接拷贝使用,我试过了,很快。10000条数据就10秒钟,如果只是一次性的导入完全可以了。