我有个需求,需要根据mysql备份的地址,恢复mysql数据
就是说我把sql备份了,然后需要通过java代码触发执行恢复的mysql脚本,但是需要传一个备份的路径
直接上代码
java代码如下:
public static void main(String[] args) {
try {
// 指定脚本的路径
String scriptPath = "C:\\Users\\Administrator\\Desktop\\Debug\\restoreData.bat";
// 备份文件名作为参数传入
String backupFileName = "C:\\Users\\Administrator\\Desktop\\12312312312\\" + "test_backup123" + ".sql";
// 创建ProcessBuilder对象,并设置脚本路径和备份文件名作为参数
ProcessBuilder processBuilder = new ProcessBuilder(scriptPath, backupFileName);
// 启动进程
Process process = processBuilder.start();
// 读取进程的输出
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 等待进程执行完毕
int exitCode = process.waitFor();
// 打印进程的退出码
System.out.println("Script executed with exit code: " + exitCode);
} catch (Exception e) {
e.printStackTrace();
}
}
bat脚本如下:起名叫restoreData.bat
@echo off
rem 检查是否传递了备份文件名作为参数
if "%~1"=="" (
echo No backup file name provided.
exit /b 1
)
rem 设置备份文件名为传入的第一个参数
set backupFileName=%~1
rem 执行数据库备份命令,使用传入的备份文件名
D:\mysql-8.0.35-winx64\bin\mysql -uroot -p123456 -P 3306 test < "%backupFileName%"