我有个需求,需要根据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=%~1rem 执行数据库备份命令,使用传入的备份文件名
D:\mysql-8.0.35-winx64\bin\mysql -uroot -p123456 -P 3306 test < "%backupFileName%"