web页面实现mysql备份导出

前言

功能如题。
mysql备份想到了两种方式:

  • 一种是通过sql语句进行数据备份
  • 一种是通过mysqldump进行备份

其实两种方式都可以,只是第一种比较麻烦而且耗费时间会比较长,第二种相对简单,但是他是通过cmd命令方式执行,不能直接操作

通过mysqldump方式

前端

首先要讲返回的类型改成

option: {
   responseType: 'blob'
}

接受函数:

this.buckup().then(res => {
    let blob = new Blob([res,option:{type: 'text/plain;charset=utf-8'}]);
    let ele = document.CreateElement('dw');
    ele.download = 'xxx.sql';
    ele.href = URL.createObjectURL(blob);
    ele.click()
    URL.revokeObjectURL(ele.href)
})

后端

@GetMapping("backup)
public void backup(HttpServletResponse reponse){
   ServletOutpotStream outputStream;
   try{
       String  cmdStr = " mysqldump -h 127.0.0.1 -uroot -p123456 database --ser-charset=UTF-8";
       Process exec = Runtime.getRuntime.exec(cmdStr);
       outputStream = response.getOutputStream();
       byte[] buffer = new byte[1024];int i;
       while ((i = exec.getInputStream().read(buffer )) != -1){
         outputStream .write(buffer,0,i);
       }
       reponse.setHeader("Content-Disponsition","sttachment; filename=backup.sql");
       outputStream.close();
   }
  
}

通过cmd执行,返回执行后的输出流,再输出到前端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值