ORACLE-如何将EXCEL中的数据导入ORACLE

工具选择
    数据库 ORACLE11G
    编程语言 JAVA
首先是使用JAVA语言编写一个解析EXCEL文件的小代码,这里需要一个工具JXL.JAR,这是个JAR包,有了它,我们就可以轻松的把EXCEL文件解析
如果要对EXCEL文件进行操作,则需要对EXCEL文件有所了解。
1、我们打开EXCEL文件看到一个一个小格子是单元格,在JXL里面被定义为CELL;
2、软件线面,状态栏上面有几个标签,可以在不同标签里进行切换,每个标签对应一个SHEET;
3、每一个可编辑的EXCEL文件在JXL里面定义为WORKBOOK;
我们的TEXT.XLS里面有两列,第一列为姓名,第二列为性别,共20行。

package com.oracle.test;

import java.io.File;
import java.io.IOException;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

public class loadExecl{
    
    public static Connection con=null;

    public static void build(Connection conn) throws  IOException,BiffException{
            String filepath="d:\\test.xls";
           System.out.print(filepath);
            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(2);//工作簿是从0开始的
                  System.out.print(sheet.getRows());
                  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:@127.0.0.1:1521:test";
     Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
     con = DriverManager.getConnection(url, "scott", "123456");
     return con;
   
 }


public static void main(String [] arg) throws  IOException, InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException, BiffException{
 
         Connection co = loadExecl.getConnection();
         co.setAutoCommit(true);
         loadExecl.build(co);
         co.close();
         System.out.println("JUST OK!!!");
 
     }
}
 
如上,红色部分是给像我一样的大老粗提个醒,记得要释放资源。
ST.CLOSE是关闭游标,ORACLE默认游标值为300,如果不关闭,而且数据量超过300的时候,就会报错。
大家可能看到,我的ROWNUM是从1开始,不是必须的,因为我的EXCEL文件第一行是标题,我这里是跳过标题。
别的我不说了,里面用到得FILE和SQL的包大家自己加上去吧。
代码可以直接拷贝使用,我试过了,很快。8000条数据就几分钟,如果只是一次性的导入完全可以了。

你可能感兴趣的:(import,package,public,void,的)