Mick.987

相信开源,才是未来的春天!

 

java 实现mysql 的备份与恢复,全部代码

实现mysql 的备份与恢复

只要两个文件(1) JavaMysql.java (2)prop.properties

package mysql;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class JavaMysql {
/**
*
* mysql数据备份 接收脚本名,并返回此路径
*
* sql为备份的脚本名比如xxx.sql
*
*/
//备份数据库
public static void backup(String sql) {

Properties pros = getPprVue("prop.properties");

// 这里是读取的属性文件,也可以直接使用

String username = pros.getProperty("username");

String password = pros.getProperty("password");

// 得到MYSQL的用户名密码后调用 mysql 的 cmd:

String mysqlpaths = pros.getProperty("mysqlpath");
String databaseName = pros.getProperty("databaseName");
String address = pros.getProperty("address");
String sqlpath = pros.getProperty("sql");
File backupath = new File(sqlpath);
if (!backupath.exists()) {
backupath.mkdir();
}

StringBuffer sb = new StringBuffer();

sb.append(mysqlpaths);
sb.append("mysqldump ");
sb.append("--opt ");
sb.append("-h ");
sb.append(address);
sb.append(" ");
sb.append("--user=");
sb.append(username);
sb.append(" ");
sb.append("--password=");
sb.append(password);
sb.append(" ");
sb.append("--lock-all-tables=true ");
sb.append("--result-file=");
sb.append(sqlpath);
sb.append(sql);
sb.append(" ");
sb.append("--default-character-set=utf8 ");
sb.append(databaseName);
Runtime cmd = Runtime.getRuntime();
try {
Process p = cmd.exec(sb.toString());
} catch (IOException e) {
e.printStackTrace();
}

}

// 读取属性值

public static Properties getPprVue(String properName) {

InputStream inputStream = JavaMysql.class.getClassLoader().getResourceAsStream(properName);
Properties p = new Properties();

try {
p.load(inputStream);
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}

return p;

}
//还原备份
public static void load(String filename) {
Properties pros = getPprVue("prop.properties");

// 这里是读取的属性文件,也可以直接使用

String root = pros.getProperty("jdbc.username");

String pass = pros.getProperty("jdbc.password");

// 得到MYSQL的用户名密码后调用 mysql 的 cmd:

String mysqlpaths = pros.getProperty("mysqlpath");
String sqlpath = pros.getProperty("sql");
String filepath = mysqlpaths + sqlpath + filename; // 备份的路径地址

// 新建数据库finacing
String stmt1 =mysqlpaths+ "mysqladmin -u " + root + " -p" + pass + " create finacing"; // -p后面加的是你的密码
String stmt2 = mysqlpaths+"mysql -u " + root + " -p" + pass + " finacing < "+ filepath;
String[] cmd = { "cmd", "/c", stmt2 };
try {
Runtime.getRuntime().exec(stmt1);
Runtime.getRuntime().exec(cmd);
System.out.println("数据已从 " + filepath + " 导入到数据库中");
} catch (IOException e) {
e.printStackTrace();
}

}

public static void main(String[] args) throws IOException {

// backup("2221.sql");
// load("2221.sql");

//load("xx.sql");
}


}

prop.properties

username = root 
password = 123456
mysqlpath = C://Program Files//MySQL//MySQL Server 5.1//bin//
sql = E://MySQl//
address=localhost
databaseName=oa2

好了,这个就完成了,经过测试的,绝对可以用

 

宝贝网址:

posted on 2012-01-09 14:31  张朋飞  阅读(1744)  评论(0编辑  收藏  举报

导航