数据库还原

地址 :http://dl2.csdn.net/down4/20070911/11165453513.bat
  * 恢复数据(mysql中cnids_manager数据库中的数据)
  * 根据用户上传的文件恢复数据库
  *  主要步骤:
  *      1.通过上传的FormFile获得文件输入流
  *      2.创建一个输出流,没有路径的,系统会默认保存到tomcat/bin目录里面
  *      3.获得保存文件的绝对路径
  *      4.从配置文件中获取数据库信息(帐户,密码,IP地址)
  *      5.执行批处理文件恢复数据(将3,4的信息作为参数传入批处理文件)
  */
 public void resume(FormFile file) throws Exception {
  String fileName = null;
  if (file != null && file.getFileName().length() > 0) {            //判断上传文件是否为空
   fileName = file.getFileName();                                //获取文件名
   InputStream streamIn = file.getInputStream();                 //获得上传文件的输入流
   OutputStream streamOut = new FileOutputStream(fileName);      //构建一个输出流,生成的文件将会保存在tomcat/bin目录下
   int bytesRead = 0;
   byte[] buffer = new byte[1024];
   
   //循环的将上传的文件写入到fileName里面
   while((bytesRead = streamIn.read(buffer, 0, 1024)) != -1) {
    streamOut.write(buffer, 0, bytesRead);
   }
   //关闭输出流
   streamOut.close();  
   
   streamIn.close();                                             //关闭输入流
   file.destroy();                                               //销毁file
   
   File tempFile = null;
   
   tempFile = new File(fileName);                              
   String absolutePath = tempFile.getAbsolutePath();            //获得绝对路径,在tomcat/bin目录下
   log.info("absolutePath: " + absolutePath);
   
   String commondStr = "";
   String mysqlUserName = Util.getProperty("mysql_username");   //数据库帐户
   String mysqlPassword = Util.getProperty("mysql_password");   //数据库密码
   String host = Util.getProperty("mysql_host");                //数据库IP地址
   
   String dateHandleDir = Util.getProperty("dateHandleDir");   //批处理文件路径
   String resumeDir = dateHandleDir+"resume.bat";
    //resumeDir是恢复数据库的批处理文件地址,后面的是需要传入的参数
    commondStr = "/""+resumeDir + "/"" + " " + mysqlUserName + " " + mysqlPassword + " " + host + " " + "/""+absolutePath + "/"";
                                       //mysqlUserName数据用户名 ,mysqlPassword为密码,host为主机名,absolutepath为上传的文件的绝对路径
   log.debug("commondStr: " + commondStr);
   Runtime cmd = Runtime.getRuntime();
   boolean haveError = false;
   Process p = cmd.exec(commondStr);        //执行这个还原的批处理文件      
   String line;
   p.getOutputStream().close();
   BufferedReader br = new BufferedReader(new InputStreamReader(p.getErrorStream()));    //读取错误信息
   
   while ((line = br.readLine()) != null) {     //如果错误信息不为null说明出错了
    //发生错误
    log.info("<<<<<<<" + line);
    haveError = true;    
   }
   
   if (haveError) {
    //恢复数据库时发生错误
    throw new CnidsException(Constants.FAIL_RESUME_SQL);
   }
//}

      tempFile.delete();                  //操作完成,删除tempFile文件
   }
 } 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值