import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
 
 
 
public class Test {
    public static void main(String[] args) throws IOException{
        backup("d:\\d.sql");
        recover("d:\\d.sql");
    }
    public static void backup(String path) throws IOException{
        Runtime runtime = Runtime.getRuntime();
        //-u后面是用户名,-p是密码-p后面最好不要有空格,-family是数据库的名字
        Process process = runtime.exec("mysqldump -u root -p123456 family");
        InputStream inputStream = process.getInputStream();//得到输入流,写成.sql文件
        InputStreamReader reader = new InputStreamReader(inputStream);
        BufferedReader br = new BufferedReader(reader);
        String s = null;
        StringBuffer sb = new StringBuffer();
        while((s = br.readLine()) != null){
            sb.append(s+"\r\n");
        }
        s = sb.toString();
        System.out.println(s);
        File file = new File(path);
        file.getParentFile().mkdirs();
        FileOutputStream fileOutputStream = new FileOutputStream(file);
        fileOutputStream.write(s.getBytes());
        fileOutputStream.close();
        br.close();
        reader.close();
        inputStream.close();
    }
    public static void recover(String path) throws IOException{
        Runtime runtime = Runtime.getRuntime();
        //-u后面是用户名,-p是密码-p后面最好不要有空格,-family是数据库的名字,--default-character-set=utf8,这句话一定的加
        //我就是因为这句话没加导致程序运行成功,但是数据库里面的内容还是以前的内容,最好写上完成的sql放到cmd中一运行才知道报错了
        //错误信息:
        //mysql: Character set 'utf-8' is not a compiled character set and is not specified in the '
        //C:\Program Files\MySQL\MySQL Server 5.5\share\charsets\Index.xml' file ERROR 2019 (HY000): Can't
        // initialize character set utf-8 (path: C:\Program Files\MySQL\MySQL Server 5.5\share\charsets\),
        //又是讨人厌的编码问题,在恢复的时候设置一下默认的编码就可以了。
        Process process = runtime.exec("mysql -u root -p123456 --default-character-set=utf8 family");
        OutputStream outputStream = process.getOutputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path)));
        String str = null;
        StringBuffer sb = new StringBuffer();
        while((str = br.readLine()) != null){
            sb.append(str+"\r\n");
        }
        str = sb.toString();
        System.out.println(str);
        OutputStreamWriter writer = new OutputStreamWriter(outputStream,"utf-8");
        writer.write(str);
        writer.flush();
        outputStream.close();
        br.close();
        writer.close();
    }
}

最新文章

  1. LTE Manual ——Logging(翻译)
  2. Java事务处理全解析(五)—— Template模式
  3. 版本引发的血案check the manual that corresponds to your MySQL server version for the right syntax
  4. Eclipse配置PyDev插件
  5. ios7新增基础类库以及OC新特性
  6. MMU、Icache、Dcache
  7. 小游戏 Lights Out (关灯) 的求解 —— 异或方程组
  8. MYSQL 缓存详解 [myownstars] 经典博客
  9. grep 基于关键字搜索
  10. 6. SQL Server数据库监控 - 如何告警
  11. 如何添加在eclipse 中添加 window Builder
  12. C++中虚拟继承
  13. HTTP请求8种方法
  14. kubeadm安装kubernetes-v1.13.1
  15. windows 杀死进程
  16. Python 中的Duck Typing
  17. azkaban group分组,权限
  18. python3+requests+unittest:接口自动化测试(一)
  19. PeopleSoft 多套Web App Prcs交叉访问
  20. express 默认模板引擎

热门文章

  1. jenkins和gitlab版本
  2. Ubuntu 18.04 初始化(server版本 )
  3. unity回调函数范例
  4. Python中使用__new__实现单例模式并解析
  5. php 写入数据库时Call to a member function bind_param() on a non-object
  6. 论JavaWeb前后端分离放弃jsp
  7. rm -rf 删除文件找回
  8. 6.让ORM映射执行的时候打印SQL语句
  9. sublime运行Python
  10. 关于Ninja中上传下载文件