2010-11-26 292 views

回答

16

从Java代码执行mysqldump

例子:

备份:

Runtime.getRuntime().exec("mysqldump -u USERNAME -pPASSWORD DBNAME > /path/to/location/backup.sql"); 

还原:

Runtime.getRuntime().exec("mysql -u USERNAME -pPASSWORD < /path/to/location/backup.sql"); 
+0

您的恢复命令需要更新。它是“mysql”而不是“mysqldump”。 “-p”和密码之间不应有空格。所以命令看起来像`mysql -u USERNAME -pPASSWORD Ankit 2015-10-30 12:24:37

3
Runtime.getRuntime().exec("mysqldump -uroot -psome_password database_name > /whereever/dump_todays_date.sql"); 
+1

只需将代码格式化为:) – 2010-11-26 07:15:26

3
Backup: 
/******************************************************/ 
//Database Properties 
/******************************************************/ 
String dbName = “dbName”; 
String dbUser = “dbUser”; 
String dbPass = “dbPass”; 
/***********************************************************/ 
// Execute Shell Command 
/***********************************************************/ 
String executeCmd = “”; 
executeCmd = “mysqldump -u “+dbUser+” -p”+dbPass+” “+dbName+” -r backup.sql”; 
} 
Process runtimeProcess =Runtime.getRuntime().exec(executeCmd); 
int processComplete = runtimeProcess.waitFor(); 
if(processComplete == 0){ 
out.println(“Backup taken successfully”); 
} else { 
out.println(“Could not take mysql backup”); 
} 
Restore: 
/******************************************************/ 
//Database Properties 
/******************************************************/ 
String dbName = “dbName”; 
String dbUser = “dbUser”; 
String dbPass = “dbPass”; 
/***********************************************************/ 
// Execute Shell Command 
/***********************************************************/ 
String executeCmd = “”; 
executeCmd = new String[]{“/bin/sh”, “-c”, “mysql -u” + dbUser+ ” -p”+dbPass+” ” + dbName+ ” < backup.sql” }; 
} 
Process runtimeProcess =Runtime.getRuntime().exec(executeCmd); 
int processComplete = runtimeProcess.waitFor(); 
if(processComplete == 0){ 
out.println(“success”); 
} else { 
out.println(“restore failure”); 
}