急!怎么用java程序控制MySQL的备份与恢复!

问题描述

在控制台用mysqldump命令备份陈宫,然后也是在控制台恢复数据也行。但是在程序中用Runtime.getRuntime().exec("")调用命令就是不行,加上waitFor()语句的话,程序就挂起不往下执行了,从网上看有人说要把控制台得输入给读出来,我把源码复制改了改还是不行,生成的sql文件只有一小部分内容。想请高手们帮帮忙,急啊

解决方案

解决方案二:
把代码贴出来分析一下。
解决方案三:
publicstaticvoidbackup(){try{Runtimert=Runtime.getRuntime();//调用mysql的cmd:Processchild=rt.exec("mysqldump-hlocalhost-uroot-p803net--default-character-set=utf8subway>D:/subway.sql");//设置导出编码为utf8。这里必须是utf8//把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行InputStreamin=child.getInputStream();//控制台的输出信息作为输入流InputStreamReaderxx=newInputStreamReader(in,"utf8");//设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码StringinStr;StringBuffersb=newStringBuffer("");StringoutStr;//组合控制台输出信息字符串BufferedReaderbr=newBufferedReader(xx);while((inStr=br.readLine())!=null){System.out.println(inStr);//**************************************************sb.append(inStr+"rn");}outStr=sb.toString();//要用来做导入用的sql目标文件:FileOutputStreamfout=newFileOutputStream("D:/subway.sql");OutputStreamWriterwriter=newOutputStreamWriter(fout,"utf8");writer.write(outStr);//注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免writer.flush();//别忘记关闭输入输出流in.close();xx.close();br.close();writer.close();fout.close();System.out.println("/*OutputOK!*/");}catch(Exceptione){e.printStackTrace();}}/***导入**/publicstaticvoidload(){try{StringfPath="D:/subway.sql";Runtimert=Runtime.getRuntime();//调用mysql的cmd:Processchild=rt.exec("mysql-uroot-p803netsubway<D:/subway.sql");OutputStreamout=child.getOutputStream();//控制台的输入信息作为输出流StringinStr;StringBuffersb=newStringBuffer("");StringoutStr;BufferedReaderbr=newBufferedReader(newInputStreamReader(newFileInputStream(fPath),"utf8"));while((inStr=br.readLine())!=null){sb.append(inStr+"rn");}outStr=sb.toString();OutputStreamWriterwriter=newOutputStreamWriter(out,"utf8");writer.write(outStr);//注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免writer.flush();//别忘记关闭输入输出流out.close();br.close();writer.close();System.out.println("/*LoadOK!*/");}catch(Exceptione){e.printStackTrace();}}
解决方案四:
用“mysqldump-hlocalhost-uroot-p803net--default-character-set=utf8subway>D:/subway.sql”命令在控制台备份,生成的subway.sql文件内容为:--MySQLdump10.13Distrib5.1.41,forWin32(ia32)----Host:localhostDatabase:subway----------------------------------------------------------Serverversion5.1.41-community/*!40101SET@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT*/;/*!40101SET@OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS*/;/*!40101SET@OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION*/;/*!40101SETNAMESutf8*/;/*!40103SET@OLD_TIME_ZONE=@@TIME_ZONE*/;/*!40103SETTIME_ZONE='+00:00'*/;/*!40014SET@OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS,UNIQUE_CHECKS=0*/;/*!40014SET@OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,FOREIGN_KEY_CHECKS=0*/;/*!40101SET@OLD_SQL_MODE=@@SQL_MODE,SQL_MODE='NO_AUTO_VALUE_ON_ZERO'*/;/*!40111SET@OLD_SQL_NOTES=@@SQL_NOTES,SQL_NOTES=0*/;----Tablestructurefortable`subway_device`--DROPTABLEIFEXISTS`subway_device`;/*!40101SET@saved_cs_client=@@character_set_client*/;/*!40101SETcharacter_set_client=utf8*/;CREATETABLE`subway_device`(`dev_id`varchar(40)NOTNULL,`seq_no`varchar(40)DEFAULT'',`city`varchar(100)DEFAULT'',`line`varchar(100)DEFAULT'',`dev_code`varchar(40)DEFAULT'',`dev_type`varchar(200)DEFAULT'',`dev_desc`varchar(400)DEFAULT'',`train_code`varchar(150)DEFAULT'',`sta_loc`varchar(150)DEFAULT'',`dt_create`varchar(50)DEFAULT'',`dev_addr`varchar(150)DEFAULT'',`dev_gateway`varchar(150)DEFAULT'',`dev_dns`varchar(150)DEFAULT'',`if_num`int(11)DEFAULT'0',`nic_count`int(11)DEFAULT'0',`rssi_threshold`int(11)DEFAULT'0',`rssi_diff_threshold`int(11)DEFAULT'0',`rssi_poll`int(11)DEFAULT'0',`pos`varchar(200)DEFAULT'',`mode`varchar(200)DEFAULT'',`remark`varchar(400)DEFAULT'',PRIMARYKEY(`dev_id`),KEY`dev_code`(`dev_code`))ENGINE=InnoDBDEFAULTCHARSET=utf8;/*!40101SETcharacter_set_client=@saved_cs_client*/;----Dumpingdatafortable`subway_device`--LOCKTABLES`subway_device`WRITE;/*!40000ALTERTABLE`subway_device`DISABLEKEYS*/;INSERTINTO`subway_device`VALUES('1','1','南京','1号线','AP1','AP','1号AP','','','2010-03-15','10.1.0.1','192.68.0.1','',4,0,0,0,0,'','',''),('2','2','南京','1号线','AP2','AP','2号AP','','','2010-03-15','10.1.0.2','192.168.0.1','',3,0,0,0,0,'','',''),('3','3','南京','1号线','AP3','AP','3号AP','','','2010-03-15','10.1.0.3','192.168.0.1','',3,0,0,0,0,'','',''),('4','4','南京','1号线','STA1','STA','1号STA','train1','front','2010-03-15','10.16.0.1','192.168.0.1','',4,1,10,10,10,'主','热备冗余',''),('402892812f6659ef012f666398f10001',NULL,NULL,NULL,'APD123','AP','123123',NULL,NULL,'11111111-四月四月-1818','12.12.12.12',NULL,NULL,0,0,0,0,0,NULL,NULL,NULL),('402892812f6659ef012f6663ecce0002',NULL,NULL,NULL,'AP2324','AP','wwer',NULL,NULL,'11111111-四月四月-1818','12.12.12.123',NULL,NULL,0,0,0,0,0,NULL,NULL,NULL),('5','5','南京','1号线','STA2','STA','2号STA','train1','back','2010-03-15','10.16.0.2','192.168.0.1','',4,0,0,0,0,'','',''),('6','6','南京','1号线','GW1','GW','1号通信网关服务器','','','2010-03-15','192.168.0.1','192.168.0.1','',2,0,0,0,0,'','',''),('7','7','南京','1号线','GW2','GW','2号通信网关服务器','','','2010-03-15','192.168.0.22','192.168.0.23','',2,0,0,0,0,'','','');/*!40000ALTERTABLE`subway_device`ENABLEKEYS*/;UNLOCKTABLES;。。。。在java程序中备份,生成的subway.sql内容为:--MySQLdump10.13Distrib5.1.41,forWin32(ia32)----Host:localhostDatabase:subway----------------------------------------------------------Serverversion5.1.41-community/*!40101SET@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT*/;/*!40101SET@OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS*/;/*!40101SET@OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION*/;/*!40101SETNAMESutf8*/;/*!40103SET@OLD_TIME_ZONE=@@TIME_ZONE*/;/*!40103SETTIME_ZONE='+00:00'*/;/*!40014SET@OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS,UNIQUE_CHECKS=0*/;/*!40014SET@OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,FOREIGN_KEY_CHECKS=0*/;/*!40101SET@OLD_SQL_MODE=@@SQL_MODE,SQL_MODE='NO_AUTO_VALUE_ON_ZERO'*/;/*!40111SET@OLD_SQL_NOTES=@@SQL_NOTES,SQL_NOTES=0*/;哪位大侠帮忙分析分析啊,急啊!!!

时间: 2024-09-21 10:24:31

急!怎么用java程序控制MySQL的备份与恢复!的相关文章

问一下java连接mysql的问题

问题描述 问一个很菜鸟的问题,用java连接mysql,try{conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/company","root","123456");}catch(SQLExceptione){util.Log_d("DBCompanyWriter","connectdbfailed:"+e.toString());r

使用java将MySQL的表导出为csv格式时,如何将表头也提取出来?

问题描述 使用java将MySQL的表导出为csv格式时,如何将表头也提取出来? 现在需要将mysql里的表导出成为csv格式的文件,但是表头无法获取.请问各位大大要如何实现?谢谢^_^ 解决方案 http://blog.sina.com.cn/s/blog_61e65d1701017m6q.html 解决方案二: 你不行的话,就用Toad直接export吧.不然你就要自己获取表结构,写不少代码.

java 与 mysql 中文问题的处理

mysql|问题|中文 问题:用 jdbc 插入.读取数据库种文字串乱码. 首先,mysql 数据库中的东西都是二进制存放的,支持任何数据,当然包括中文.你到命令行下 insert into testtable values ( '中文' ); select * from testtable; 全都显示正常. 但是,虽然存取中文没问题,但排序.匹配的时候有问题.所以如果你的数据库里有中文的话,记得在配置文件中,如 c:winntmy.ini 中的 [mysqld] 里添加一行: default-

java调用mysql存储过程实例分析

  本文实例讲述了java调用mysql存储过程的方法.分享给大家供大家参考.具体如下: 数据库的测试代码如下 : 1.新建表test ? 1 2 3 4 5 create table test( field1 int not null ) TYPE=MyISAM ; insert into test(field1) values(1); 2.删除已存在的存储过程: ? 1 2 3 -- 删除储存过程 delimiter // -- 定义结束符号 drop procedure p_test; 3

用java向mysql中导入大量txt数据

问题描述 用java向mysql中导入大量txt数据 用java向mysql中导入大量txt数据大约一百万条,怎样能用jdbc高效的存储,不用jdbc有其他方法也可以,重要的是,快求大神指点一二,尽量不要发百度连接啥的,我差不多都找过了,说的详细点,跪求 解决方案 批处理..什么?批处理还不爽?那就批处理这种语句:insert into XXX(abcdd) values(11111)(222222)(33333)还不爽?那就多线程去跑.一百W数据不大.连本地库应该数秒就可以解决 解决方案二:

如何用java对mysql 里面的数据进行批量修改

问题描述 如何用java对mysql 里面的数据进行批量修改 现在想要对数据库里面的学生姓名.年龄.性别.电话...进行修改,如何进行批量操作,比如一次性对于上述所属全部修改(更新),试过用statement.executeUpdate(sql1);statement.executeUpdate(sql2);....可是会出现sql语句语法错误,但是语句在数据库里面试过了,没有错误,求解 解决方案 试一下 把要修改的sql语句写在一起,用;号隔开 解决方案二: 如果是sql语句都一样的话,jav

如何用java在mysql里创建表头

问题描述 如何用java在mysql里创建表头 用java在mysql里创建表头,表头是从网页的table标签里获取的属性值.CS萌新求大大解决一下.O(∩_∩)O谢谢 解决方案 create table (字段)http://www.pudn.com/downloads553/sourcecode/java/detail2282083.htmlhttp://blog.csdn.net/rui_dlut/article/details/6758031

请问:用java代码mysql如何加载到memcached中?谢谢!!

问题描述 请问:用java代码mysql如何加载到memcached中?谢谢!! 请问:用java代码mysql如何加载到memcached中?谢谢!! 解决方案 你应该是想java调用数据库等访问mysql获取到数据,然后放入memcached等做缓存.

java连接MySQL数据库实现代码_java

本文实例为大家分享了java连接MySQL数据库代码,供大家参考,具体内容如下 //java连接MySQl数据库实例代码 package com.abc.dao; /*dkplus专业搜集和编写实用电脑软件教程, *搜集各种软件资源和计算机周边,独立制作视频和ppt和音频微信公众号, *点击进入 dkplus官方博客 (java网络编程http://dkplus.iteye.com), *微信搜索dkplus关注公众号可获取海量计算机周边资源.*/ import java.sql.Connect