java 数据库备份 和 还原

/**
* @Description:数据库备份
* @return ModelAndView
* @Author:yty
*/
@PostMapping(value = "/databaseSave")
public Object databaseSave(HttpServletRequest request,HttpSession session) {
Process process = null;
try{
ResourceBundle bundle = ResourceBundle.getBundle("sysConfig");
// 配置文件,文件存放地址
String path = bundle.getString("database.path");
File saveFile = new File(path);  
       if (!saveFile.exists()) {// 如果目录不存在  
           saveFile.mkdirs();// 创建文件夹  
       }
       
       //保存此条数据
       SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd_HHmmss");//设置日期格式
String date = df.format(new Date());
       Map<String, Object> map = new HashMap<String, Object>();
       
        map.put("table", "t_sys_database");

Map<String, Object> params = new HashMap<String, Object>();
params.put("dataname", "kfqjy_"+date);
SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
params.put("createtime_date", df1.format(new Date()));
map.put("params", params);
       
sysService.save(map);
       
       //备份sql
       String sql = "exp kfqjy/kfqjy@orcl file="+path+"/kfqjy_"+date+".dmp";
       
       //启动 执行程序
       process = Runtime.getRuntime().exec(sql);  
       
       try{
        //此处让线程延时3秒,让数据库成功备份之后,摧毁process
           Thread.sleep(3000);
           process.destroy();
       }catch (InterruptedException e){
           e.printStackTrace();
       }
}catch(Exception e){
e.printStackTrace();
return ResultUtils.error(1, "备份失败!请重试!");
}
return ResultUtils.success("备份成功!", "");

}



/**
* @Description:数据库还原
* @return ModelAndView
* @Author:yty
*/
@PostMapping(value = "/databaseReset")
public Object databaseReset(HttpServletRequest request,HttpSession session) {
Process process = null;
try{
ResourceBundle bundle = ResourceBundle.getBundle("sysConfig");
// 配置文件,文件存放地址
String path = bundle.getString("database.path");
String fileName = request.getParameter("fileName");
String newpath = path+"/"+fileName+".dmp";
       
       
Map<String, Object> map = new HashMap<String,Object>();

//删除表
String sql = " declare vsql varchar2(200); " +
" cursor c1 is " +
" select 'drop table '||table_name||' cascade constraints' v_name " +
" from user_tables;" +
" BEGIN " +
" for i in c1 loop" +
" vsql:=i.v_name;" +
" execute immediate vsql;" +
" end loop;" +
" end;";
map.put("sql", sql);
sysService.getMapBySql(map);

//删除视图
/*sql = "declare cursor cur is select 'drop view ' || view_name as a from user_views; " +
" begin" +
" for i in cur loop" +
" execute immediate i.a;" +
" end loop;" +
" end;";
map.put("sql", sql);
sysService.getMapBySql(map);*/

       
       //还原sql
       String resetsql = "imp kfqjy/kfqjy@127.0.0.1:1521/orcl file="+newpath+" full=y ignore=y";
       
       //启动 执行程序
       process = Runtime.getRuntime().exec(resetsql);  
       
       try{
           Thread.sleep(3000);
           process.destroy();
       }catch (InterruptedException e){
           e.printStackTrace();
       }
       
       //this.expSql(map);

}catch(Exception e){
e.printStackTrace();
return ResultUtils.error(1, "还原失败!请重试!");
}

return ResultUtils.success("还原成功!", "");
}


/**
     * 删除文件,可以是文件或文件夹
     *
     * @param fileName
     *            要删除的文件名
     */

@PostMapping(value = "/deleteFile")
    public void deleteFile(HttpServletRequest request) {
    ResourceBundle bundle = ResourceBundle.getBundle("sysConfig");
// 配置文件,文件存放地址
String path = bundle.getString("database.path");

String fileName = request.getParameter("fileName");

String newpath = path+"/"+fileName+".dmp";
        File file = new File(newpath);
        
        if(file.exists()&&file.isFile()){
        file.delete();
        }
    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值