4

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");

このタスクをどのように行う必要がありますか。ありがとう。

4

3 に答える 3

4

2 つの問題:

  • -p とパスワードの間のスペース
  • 実行可能ファイルへのパス内のスペース

これを好む:

 runtime.exec(new String[]{"C:\\Program Files\\MySql\\MySql Server 5.5\\bin\\mysqldump", "-u", "root", "-pmyDatabase" "> D:\\backup.sql"});

runtime.exec に問題がある場合は、返されたProcessから取得できるストリームを確認する必要があることに注意してください。エラーの場合にこれらのストリームを見ないことは、例外がスローされたときに例外を見ないことに少し似ています。

于 2012-08-31T14:39:40.533 に答える
4

バックアップ:

/******************************************************/
//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”);

}
于 2012-08-31T15:17:19.787 に答える
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;
    }
}
于 2012-10-01T06:57:02.093 に答える