我想使用我的java代码导出我的MySQL数据库。但我没有找到任何办法。我想要做的是我的应用程序中有一个按钮作为“导出数据库”。单击该按钮时,应将我的数据库导出到指定的路径。我使用了以下代码,但它没有用:
Runtime runtime = Runtime.getRuntime();
runtime.exec("C:\\Program Files\\MySql\\MySql Server 5.5\\bin\\mysqldump -u root -p myDatabase> D:\\backup.sql");
我该怎么做这个任务。感谢。
答案 0 :(得分:4)
两个问题:
首选:
runtime.exec(new String[]{"C:\\Program Files\\MySql\\MySql Server 5.5\\bin\\mysqldump", "-u", "root", "-pmyDatabase" "> D:\\backup.sql"});
请注意,如果您遇到runtime.exec问题,您应该查看可以从返回的Process获得的流。在发生错误时不查看这些流有点像在抛出异常时不查看异常。
答案 1 :(得分:2)
备份:
/******************************************************/
//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”);
}
还原:
/******************************************************/
//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”);
}
答案 2 :(得分:1)
你可以试试这个。
public void actionPerformed(ActionEvent evt)
{
private String m_MySqlPath="";
ResultSet res=null;
res = DBHandler.getInstance().executeQuery("select @@basedir",null);
while(res.next())
{
m_MySqlPath=res.getString(1) ;
}
m_MySqlPath = m_MySqlPath.replace("\\Data\\", "\\bin\\");
if (exportDB.isSelected()
{
try {
String executeCmd = m_MySqlPath + "\\mysqldump -u " + DB_USER
+" -p" + DB_PASSWORD + " " + DB_NAME + " -r " + "\""+FilePath + "\\"
+ FileName+"\"";
Process runtimeProcess = Runtime.getRuntime().exec(executeCmd, null);
BufferedReader r=new BufferedReader(new InputStreamReader(runtimeProcess.getInputStream()));
String s;
while((s=r.readLine())!=null)
{
System.out.println(s);
}
return true;
}
catch (final Exception ex) {
ex.printstackTrace();
return false;
}
}