ScriptRunner 执行SQL文件


    @Override
    @Async
    public BaseResult run() {
        BaseResult baseResult ;
        Connection conn = null;
        ScriptRunner runner = null;
       OutputStream os = null;
       PrintWriter logWriter = null;
       try{
           Class.forName(driver).newInstance();
           conn =DriverManager.getConnection(url, userName, passWord);
           runner = new ScriptRunner(conn);
           Resources.setCharset(Charset.forName("UTF-8")); //设置字符集,不然中文乱码插入错误
           os=new FileOutputStream("wesure-wehr-service/target/classes/log.txt");
           os.flush();
           logWriter = new PrintWriter(os);
           runner.setErrorLogWriter(logWriter);
           runner.setLogWriter(null);//设置是否输出日志

           Reader reader = new FileReader("wesure-wehr-service/target/classes/t_dt_orgstatics.sql");
           runner.runScript(reader);

       }catch(SQLException  e){
//           try {
//               conn.rollback();
//               log.error("数据回滚成功");
//           }catch (Exception e2){
//               log.error("数据回滚失败");
//           }
           log.error(e.getMessage());
           baseResult = new BaseResult(BaseMessage.ERROR,"数据库连接错误", null);
           log.error(baseResult.getMessage());;
           return baseResult;
       } catch (IllegalAccessException | IOException | ClassNotFoundException | InstantiationException e) {
           log.error(e.getMessage());
           return new BaseResult(BaseMessage.ERROR,"文件读取错误", null);
       }finally {
           if(runner != null)
            runner.closeConnection();
           try {
               if(conn != null)
                conn.close();
               if(os != null)
                os.close();
           }catch (Exception e){
               log.error(e.getMessage());
           }
           if(logWriter != null)
               logWriter.close();
       }

       FileInputStream fis = null;
       StringBuffer stringBuffer = new StringBuffer();
       try {
           fis = new FileInputStream("wesure-wehr-service/target/classes/log.txt");
           InputStreamReader isr = new InputStreamReader(fis);
           char[] b = new char[5];// 读取到的数据要写入的数组。
           int len;// 每次读入到char[]中的长度,若无则返回-1

           while ((len = isr.read(b)) != -1) {
               stringBuffer.append(new String(b, 0, len));
           }
       } catch (IOException e) {
           log.error(e.getMessage());
           baseResult = new BaseResult(BaseMessage.ERROR,"文件读取错误", null);
           log.error(baseResult.getMessage());;
           return baseResult;
       } finally {
           if (fis != null) {
               try {
                   fis.close();
               } catch (IOException e) {
                   log.error(e.getMessage());
               }
           }

       }

       if(stringBuffer.length() > 0){
           log.info(stringBuffer.toString());
           return new BaseResult(BaseMessage.ERROR,stringBuffer.toString(), null);
       } else{
           log.info("运行完成");
           return new BaseResult(BaseMessage.SUCCESS);
       }
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值