将Excel数据导入Oracle

转载自:  http://blog.csdn.net/quanleilei123/article/details/5770943



工具选择

   数据库 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秒钟,如果只是一次性的导入完全可以了。


你可能感兴趣的:(java,oracle,Excel)