java调用mysql工具,实现数据库备份

今天在网上看到一个哥们写的程序挺好,就是用java调mysql工具,实现数据库备份!但忘记在那个网站上看到的了。如果这个哥们看到我转载你的文章,请不要生气。 :D 。
主要使用Runtime累的Exec方法。如果不了解这个类的话,去查一查JDK文档。
废话少说。看代码

/*
mysqldump备份同一个库的多个表
备份指定数据库的一个或者多个表,用法是:
mysqldump [options] DATABASE TABLE1 [TABLE2 TABLE 3...]
例如备份wordpress数据库的wp_posts表和wp_options表到wordpress_1.sql:

mysqldump -u root -p wordpress wp_posts wp_options > wordpress_1.sql
*/
public class JavaBackupMysql {

public static void main(String[] args) throws IOException {
JavaBackupMysql jmsql = new JavaBackupMysql();
jmsql.backup("backupDb1.sql");

}

public void backup(String sql) {

InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("dataSource.properties");
Properties pros = new Properties();
try {
pros.load(inputStream);
} catch (IOException e1) {
e1.printStackTrace();
} finally {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}

// 这里是读取的属性文件,也可以直接使用
String username = pros.getProperty("dataSource.username");// 用户名
String password = pros.getProperty("dataSource.password");// 密码
String mysqlpaths = pros.getProperty("mysqlpath");// mysqldump.exe文件路径
String address = pros.getProperty("address");// 数据库地址
String databaseName = pros.getProperty("databaseName");// 要备份的数据库名
String tableName = pros.getProperty("backTable");// 要备份的表名(可选)
String sqlpath = pros.getProperty("sql");// 备份出来的sql地址,我这放到D盘下了

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("--default-character-set=gb2312 ");//注意你的mysql数据库设置的字符集,要与这设置的一致否则,汉字会乱码。
sb.append(databaseName);
sb.append(" ");
sb.append(tableName);
//System.out.println(sb);
Runtime cmd = Runtime.getRuntime();
try {
Process p = cmd.exec(sb.toString());
} catch (IOException e) {
e.printStackTrace();
}

}
}

其实就是执行了

Runtime.getRuntime().cmd.exec("C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump --opt -h localhost --user=root --password=123456 --lock-all-tables=true --result-file=c:backupDb1.sql --default-character-set=gb2312 test student");
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值