您的位置:首页 > 数据库 > Oracle

ORACLE学习之路--如何将EXCEL中的数据导入ORACLE

2009-08-07 10:08 543 查看
前几天看到遇到需要把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文件第一行是标题,我这里是跳过标题。

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

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

OK...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: