如何将Excel表格中的数据批量导入到Oracle数据库表中
2010-07-28 12:51
495 查看
工具选择
数据库 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的包大家自己加上去吧。
代码可以直接拷贝使用,我试过了,很快。10000条数据就10秒钟,如果只是一次性的导入完全可以了。
数据库 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的包大家自己加上去吧。
代码可以直接拷贝使用,我试过了,很快。10000条数据就10秒钟,如果只是一次性的导入完全可以了。
相关文章推荐
- c#如何将dataset中的数据批量导入oracle数据库
- 如何写批处理文件自动将数据导入oracle数据库
- 如何使用PLSQL Developer从oracle数据库导入导出数据
- 代码执行批量Excel数据导入Oracle数据库
- 关于Excel中的数据如何导入到oracle数据库中.
- ADO.NET 对数据操作 以及如何通过C# 事务批量导入数据
- 如何把批量数据导入到android 的 sqlite 数据库(更新中)
- ②Excle数据批量导入到Oracle数据库中
- 如何将excel表格的数据导入到mysql数据中去
- 用C#如何读取EXCEL表格中的数据,再导入我数据库中,
- 如何高效地批量导入数据到SqlServer
- Android---批量将excel表格中的联系人数据导入到系统联系人
- Excel批量导入如何做数据去重
- 如何把外部数据文件导入到oracle数据库中
- 如何将excel表格的数据导入到mysql数据中去
- 学习随笔(一):Shell脚本批量导入数据到Oracle数据库
- 如何使用PLSQL Developer从oracle数据库导入导出数据
- 转载:如何将Excel数据批量导入SQL数据库
- 如何把批量数据导入到android 的 sqlite 数据库(转)
- 如何将高版本oracle的数据导入到低版本oracle数据库中