自用 粘上就好使
需要保存的地址
String pathSql = "D:\\" + "a.sql";
File fileSql = new File(pathSql);
//创建备份sql文件
if (!fileSql.exists()) {
fileSql.createNewFile();
}
//mysqldump -hlocalhost -uroot -p123456 db > /home/back.sql
StringBuffer sb = new StringBuffer();
//固定的
sb.append("mysqldump");
//ip地址
sb.append(" -h127.0.0.1");
//用户名
sb.append(" -u" + "root");
//端口号
sb.append(" -P" + "端口号");
// 密码
sb.append(" -p" + "密码");
//如果需要导出全部就是库名 指定表加上指定的表名
sb.append(" " + "库名 表名 " + " >");
sb.append(pathSql);
System.out.println("cmd命令为:" + sb.toString());
Runtime runtime = Runtime.getRuntime();
System.out.println("开始备份:" + "machine_exam");
//有个坑 一定要写到msql的bin目录下\+命令,否则运行不了
Process process = runtime.exec("cmd /c C:\\Users\\19073\\mysql\\bin\\" + sb.toString());
System.out.println("备份成功!");
return true;
在密码下有需要可以添加
** // 不导出任何表空间信息。
sb.append(" -y");
// 取消附加注释信息。
sb.append(" --skip—comments");
// 导出更少的输出信息,去掉注释和头尾等结构。
sb.append(" --compact");
// 在客户端和服务器之间启用压缩传递所有信息
sb.append(" -C");
// 去掉40000语句
sb.append(" -K");
// 使用具有多个VALUES列的INSERT语法。这样使导出文件更小,并加速导入时的速度。默认为打开状态。
sb.append(" -e");
// 在导出过程中忽略出现的SQL错误。
sb.append(" --force");
// 只导出数据,而不添加CREATE DATABASE 语句。
sb.append(" -n");
// 只导出数据,而不添加CREATE TABLE 语句。
sb.append(" -t");**