六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 44|回复: 0

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

[复制链接]

升级  64%

6

主题

6

主题

6

主题

童生

Rank: 1

积分
32
 楼主| 发表于 2013-2-3 14:40:55 | 显示全部楼层 |阅读模式
今天在网上看到一个哥们写的程序挺好,就是用java调mysql工具,实现数据库备份!但忘记在那个网站上看到的了。如果这个哥们看到我转载你的文章,请不要生气。
主要使用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");
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表