1. 程式人生 > >如何將Excel表格中的資料批量匯入到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行。

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秒鐘,如果只是一次性的匯入完全可以了。