/** * @param hostIP ip地址,能夠是本機也能夠是遠程 * @param userName 數據庫的用戶名 * @param password 數據庫的密碼 * @param savePath 備份的路徑 * @param fileName 備份的文件名 * @param databaseName 須要備份的數據庫的名稱 * @return */ public boolean backup(String hostIP, String userName, String password, String savePath, String fileName, String databaseName) { File saveFile = new File(savePath); if (!saveFile.exists()) {// 若是目錄不存在 saveFile.mkdirs();// 建立文件夾 } String exePath = "mysqldump"; if (PlatformUtil.isWindows()) { exePath = mysqldumpExePath; } //拼接命令行的命令 StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(exePath).append(" --opt").append(" -h").append(hostIP); stringBuilder.append(" --user=").append(userName).append(" --password=").append(password) /*.append(" --lock-all-tables=true")*/; stringBuilder.append(" --result-file=").append(savePath + "/" + fileName).append(" --default-character-set=utf8 ") .append(databaseName); try { //調用外部執行exe文件的javaAPI Process process = CMDUtil.execProcess(stringBuilder.toString()); process.waitFor(); InputStream errorStream = process.getErrorStream(); String s = IOUtils.toString(errorStream, "gbk"); System.out.println(s); int value = process.exitValue(); if (value == 0) {// 0 表示線程正常終止。 return true; } } catch (Exception e) { e.printStackTrace(); } return false; }
在 windows下,java
mysqldumpExePath
表示的是mysqldump.exe的路徑,包括文件名。