package impExcel; import java.io.File; import java.io.IOException; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.UUID; import javax.swing.JOptionPane; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; public class ImpExcel { private static Connection conn = null; private static Statement st = null; private static String drive = "oracle.jdbc.driver.OracleDriver"; private static String DBurl = "jdbc:oracle:thin:@127.0.0.1:1521:orcl"; private static String name = "username"; // 数据库账号 private static String pwd = "password"; // 数据库,密码 { try { Class.forName(drive); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static void main(String[] args) { readExcelAndImp("c:/filePath.xls","tableName"); } /** * 创建数据库表,并校验当前表是否存在 * @param tableName 数据库表名 * @param createTableSql 建表sql */ public static boolean createTable(String tableName,String createTableSql){ try { DatabaseMetaData dMetaData = getConn().getMetaData(); ResultSet rs = dMetaData.getTables(null, null, "%", new String[]{"TABLE"}); boolean tableIsExists = false; while (rs.next()){ if(rs.getString("TABLE_NAME").toUpperCase().equals(tableName.toUpperCase())){ tableIsExists=true; } } rs.close(); if(tableIsExists){ int a = JOptionPane.showConfirmDialog(null, "数据库已经存在的表"+tableName+",确定删除吗?", "温馨提示", JOptionPane.YES_NO_OPTION); if (a == 0) { try { excuteSql("drop table " + tableName + ""); excuteSql(createTableSql); return true; } catch (Exception e1) { e1.printStackTrace(); } } else { int aa = JOptionPane.showConfirmDialog(null, "是否继续添加到原来表单裏面", "温馨提示", JOptionPane.YES_NO_OPTION); if (aa == 1) { return false; }else{ return true; } } }else{ excuteSql(createTableSql); return true; } } catch (Exception e) { e.printStackTrace(); } return false; } /** * 读取excel并导入数据库 * @param filePath excel文件路径 * @param TableName 数据库表名 */ public static void readExcelAndImp(String filePath,String TableName) { File filename = new File(filePath); Workbook wb = null; String create = "create table " + TableName + "( uuid varchar(255)"; String sql = "insert into " + TableName + "("; String parameter = "uuid"; String value = ""; String insert = ""; try { wb = Workbook.getWorkbook(filename); Sheet sheet = wb.getSheet(0);// 第1个sheet Cell cell = null; int row = sheet.getRows();// 总行数 int col = sheet.getColumns();// 总列数 for (int i = 0; i < col; i++) { create += ","+sheet.getCell(i, 0).getContents() + " varchar(255)"; parameter += ","+sheet.getCell(i, 0).getContents(); } create += ")"; System.out.println("数据库生成表语句---" + create); boolean createTableSuccess = createTable(TableName, create); if(!createTableSuccess)return; st = getConn().createStatement(); long readStrTime = System.currentTimeMillis(); for (int i = 1; i < row; i++) { value = "'"+UUID.randomUUID().toString()+"'"; for (int j = 0; j < col; j++) { cell = sheet.getCell(j, i); value += ",'" + cell.getContents() + "'"; } insert = sql + parameter + ") values(" + value + ")"; st.addBatch(insert); // System.out.println("添加语句----"+i+"---" + insert); if(i%1000==0){ System.out.println("加载数据 "+i+" 条!"); } if(i==row-1){ System.out.println("加载数据 "+i+" 条!"); long readEndTime = System.currentTimeMillis(); System.out.println("数据读取完毕,耗时"+((readEndTime-readStrTime)/1000)+"秒!"); } } System.out.println("开始入库......"); long startTime = System.currentTimeMillis(); st.executeBatch(); st.close(); long endTime = System.currentTimeMillis(); System.out.println("入库完成,耗时"+((endTime-startTime)/1000)+"秒,总计"+((endTime-readStrTime)/1000)+"秒!"); } catch (IOException e) { e.printStackTrace(); } catch (BiffException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }finally{ close(conn,st,null); } } /** * 获取数据库连接 * @return */ public static Connection getConn() { try { if(conn==null||conn.isClosed()){ conn = DriverManager.getConnection(DBurl, name, pwd); } } catch (Exception e) { e.printStackTrace(); JOptionPane.showMessageDialog(null, "数据库连接错误"); } return conn; } /** * 关闭数据库连接 * @param conn 数据库连接 * @param st statement对象 可为null * @param rs 结果集 可为null */ public static void close(Connection conn,Statement st,ResultSet rs){ if(rs!=null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); }finally{ if(st!=null) { try { st.close(); } catch (SQLException e) { e.printStackTrace(); }finally { if(conn!=null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } } }else if(rs==null) { if(st!=null){ try { st.close(); } catch (SQLException e) { e.printStackTrace(); }finally { if(conn!=null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }else if(st==null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } }else if(st==null&&rs==null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } /** * 向数据库插入一条数据,并返回成功结果数,同时关闭数据库连接 * @param st statement对象 * @param sql 语名 * @return */ public static int excuteSql(String sql) { int result = 0; try { st = getConn().createStatement(); result = st.executeUpdate(sql); } catch (Exception e) { System.out.println("添加失败"); } finally { try { st.close(); } catch (SQLException e) { e.printStackTrace(); }finally{ close(conn,st,null); } } return result; } }
相关推荐
exp userid=dasj/dasj(红色数据库名称)@10.17.0.151:1521/orcl (远程备份填写服务器地址,本机备份无需填写服务器地址)file=D:\140602sjbf\1\(存储路径)dasj.dmp owner=dasj log=D:\140602sjbf\1\(存储路径)...
orcl数据库分页源码通过数据库实现分页,能有效的减少java代码,和更高效的执行!
Oracle命令集合 里面有各种常用语句 例子 创建实例等等命令,应有尽有
ORCL数据库中文版
登陆Orcal的sys用户后,创建用户名、表空间等sql语句操作
insert into student values(1004,'lily','女','05-6月-1988',250); grant resource to test; grant connect to test; select * from emp e right outer join emp m on e.mgr=m.empno ;
---注意我用的数据库是orcl数据库--- ----建表语句 ----数据库数据 ----数据库中的递归方法 --- 递归计算数量 注意要慎用,弄不好不数据库能弄挂掉了,下载模仿写的时候一定不要写成死循环,要不自己机器还好,...
NC对应ORCL数据库建立表空间和用户语句和其他日常数据库操作(数据库导出备份和导入还原,表空间扩展)
SSH框架实现orcl数据库过关项目保证完美!
Orcl导入数据库.txt Orcl导入数据库.txt
保证可以运行的项目源码,数据库完整,运行时,你们要看清hibernate文件的用户名和密码。不要弄错了,我的用户名是scott
将orcle数据服务器时间同步到本地来,保证本地时间和数据库服务时间一致
C#连接orcl实例
连接数据库后进行的修改 java连接数据库 连接数据库后进行的修改 java连接数据库orcl
java sql 详细的数据库的指导和立体
我收集的各种数据库驱动包,其中有db2 mysql oracle sqlserver2000 sqlserver2005 sybase等数据库的驱动
Oracle数据库实验
oracle还原数据库基础语句 创建表空间,创建用户,还原语句
火龙果软件工程技术中心 表空间是oracle数据库中最大的逻辑单位与存储空间单位,数据库系统通过表空间为数据库对象分配空间。表空间在物理上体现为磁盘数据文件,每一个表空间由一个或多个数据文件组成,一个数据...
使用PL/SQL developer的图形界面,建立图书管理数据库orcl中的各个关系 在建立的关系中输入有效数据 删除以上各关系 在PL/SQL developer用SQL代码建立orcl数据库中各关系 用SQL 代码完成数据增、删、改