一键备份mysql数据库

public void backup() throws IOException{
try {
if(null==po){
po = new SjkbfEntity();
}
po.setCjrq(new Date());
String bakDBname = DateTime.getCurrentDate_YYYYMMDDHHMMSSWithOutSeparator();//文件名

		Runtime runtime = Runtime.getRuntime();
        //-u后面是用户名,-p是密码-p后面最好不要有空格,-family是数据库的名字
        Process process = runtime.exec("mysqldump -u root -pnathan@lengwei‍ metro");
        InputStream inputStream = process.getInputStream();//得到输入流,写成.sql文件
        InputStreamReader reader = new InputStreamReader(inputStream);
        BufferedReader br = new BufferedReader(reader);
        String s = null;
        StringBuffer sb = new StringBuffer();
        while((s = br.readLine()) != null){
            sb.append(s+"\\r\\n");
        }
        s = sb.toString();
        System.out.println(s);
        File file = new File("D:/DBBACKUP/"+bakDBname+".sql");
        file.getParentFile().mkdirs();
        FileOutputStream fileOutputStream = new FileOutputStream(file);
        fileOutputStream.write(s.getBytes());
        fileOutputStream.close();
        br.close();
        reader.close();
        inputStream.close();
        
		po.setSc("0");
		po.setYhid(getLoginUser());
		po.setBfdz("D:/DBBACKUP/"+bakDBname+".sql");
		service.save(po);

    
		/*方法一:
		 * Runtime rt = Runtime.getRuntime();
	   // 调用 调用mysql的安装目录的命令
	   Process child = rt
	     .exec("D://Program Files//MySQL//MySQL Server 5.0//bin//mysqldump -h localhost -uroot -proot cnr");
	   // 设置导出编码为utf-8。这里必须是utf-8
	   // 把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行
	   InputStream in = child.getInputStream();// 控制台的输出信息作为输入流

	   InputStreamReader xx = new InputStreamReader(in, "utf-8");
	   // 设置输出流编码为utf-8。这里必须是utf-8,否则从流中读入的是乱码

	   String inStr;
	   StringBuffer sb = new StringBuffer("");
	   String outStr;
	   // 组合控制台输出信息字符串
	   BufferedReader br = new BufferedReader(xx);
	   while ((inStr = br.readLine()) != null) {
	    sb.append(inStr + "\r\n");
	   }
	   outStr = sb.toString();

	   // 要用来做导入用的sql目标文件:
	   FileOutputStream fout = new FileOutputStream(
	     "D:/DBBACKUP/"+bakDBname+".sql");
	   OutputStreamWriter writer = new OutputStreamWriter(fout, "utf-8");
	   writer.write(outStr);
	   writer.flush();
	   in.close();
	   xx.close();
	   br.close();
	   writer.close();
	   fout.close();*/

		/*方法二
		 * String mssqlBackupPath = ServletActionContext.getServletContext()
				.getRealPath("/backup");
		String path = "\"" + mssqlBackupPath + "\\" + bakDBname + ".sql"
				+ "\"";// 备份生成的数据路径及文件名
		String str ="cmd /c mysqldump -h localhost -uroot -proot cnr >" + path;
		Runtime rt = Runtime.getRuntime();
		Process process = rt.exec(str);
		InputStreamReader isr = new InputStreamReader(process.getErrorStream());
		LineNumberReader input = new LineNumberReader(isr);
		String line;
		while ((line = input.readLine()) != null) {
			System.out.println(line + "~~~~~~~~~~");
		}*/
		
		
		/*方法三:
		 * Runtime rt = Runtime.getRuntime();
        // 调用 mysql 的 cmd:
        Process child = rt
                .exec("mysqldump -uroot -proot --set-charset=utf8 cnr");// 设置导出编码为utf8。这里必须是utf8

        // 把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行
        InputStream in = child.getInputStream();// 控制台的输出信息作为输入流
        InputStreamReader xx = new InputStreamReader(in, "utf8");// 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码
        String inStr;
        StringBuffer sb = new StringBuffer("");
        String outStr;
        // 组合控制台输出信息字符串
        BufferedReader br = new BufferedReader(xx);
        while ((inStr = br.readLine()) != null) {
            sb.append(inStr + "\r\n");
        }
        outStr = sb.toString();

        // 要用来做导入用的sql目标文件:
        FileOutputStream fout = new FileOutputStream(
                "D:/DBBACKUP/"+bakDBname+".sql");
        OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8");
        writer.write(outStr);
        // 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
        writer.flush();
        // 别忘记关闭输入输出流
        in.close();
        xx.close();
        br.close();
        writer.close();
        fout.close();*/
        
	} catch (Exception e) {
		logger.error(e.getMessage());
		e.printStackTrace();
		getResponseWriter().write("备份失败!");
	}
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
问道端游一键导入 SQL 数据库的步骤如下: 首先,在问道端游的服务器上,我们需要拥有 SQL 数据库管理工具,例如 MySQL Workbench 或 Navicat 等。确保已经安装并配置好该工具。 接下来,我们需要创建一个新的数据库。打开数据库管理工具,并连接到服务器上的数据库。在工具中选择“创建数据库”选项,并设置数据库的名称、字符集、排序规则等信息。 然后,将 SQL 文件导入数据库。在数据库管理工具中选择“打开文件”选项,并选择需要导入的 SQL 文件。工具将会读取该文件,并显示其中的 SQL 语句。确认无误后,点击“执行”按钮,开始导入数据。 导入过程可能需要一些时间,具体取决于 SQL 文件的大小和服务器的配置。当导入完成后,工具将会显示导入结果,包括成功导入的数据表和记录数量。 最后,验证导入结果。在数据库管理工具中选择新建查询窗口,输入一些简单的查询语句,例如“SELECT * FROM 表名”,来查看导入的数据是否正确显示。 需要注意的是,在导入 SQL 数据库之前,我们需要确保 SQL 文件的格式正确,包括语法、表结构和数据内容等方面。另外,为了保证数据库的安全性,我们也需要定期备份数据库,并遵循数据库管理的最佳实践。 总结起来,一键导入 SQL 数据库的步骤包括创建数据库、导入 SQL 文件、验证导入结果。通过这些操作,我们可以方便快捷地将数据导入问道端游的数据库中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值