`
jeanboy
  • 浏览: 3247 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

急,求助

阅读更多
问java 实现mySQL数据备份、还原的问题,大家帮帮忙,感激不尽
原理利用java执行exec方法调用mySQLdump命令实现备份,调用mySQL命令实现还原。

出现错误和结果如下:
1)备份时,备份文件为空文件;
2)还原时,出现异常如下:java.io.IOException: 管道正在被关闭。
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(Unknown Source)
at java.io.BufferedOutputStream.write(Unknown Source)
at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(Unknown Source)
at sun.nio.cs.StreamEncoder$CharsetSE.implWrite(Unknown Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at java.io.OutputStreamWriter.write(Unknown Source)
at java.io.Writer.write(Unknown Source)
at file.test.DataImport.main(DataImport.java:53)


备份代码如下:
       
/*注:要将mysql的bin目录加入到环境变量Path中

*将MySql中的数据库导出到文件中 备份

*/

import java.io.*;

import java.lang.*;

public class DataExport { 

public static void main(String[] args) {

// 数据库导出

String user = "root"; // 数据库帐号

String password = "root"; // 登陆密码

String database = "eshop"; // 需要备份的数据库名

String filepath = "e:\\EShop.sql"; // 备份的路径地址

//注意mysqldump是调用mysql数据库的一个组件,在未在系统变量中声明的话,要在这里写mysqldump的完整路径

String stmt1 = "mysqldump -u" + user + " -p" + password +" "+database +" > "+ filepath;
//" --result-file=" + filepath;

/*

* String mysql="mysqldump test -u root -proot

* --result-file=d:\\test.sql";

*/

try {

//Process Proexec=Runtime.getRuntime().exec("cmd /c mysqldump -h localhost -u root -p root  -b eshop > E:\\eshop.sql");
Process Proexec=Runtime.getRuntime().exec("cmd /c"+stmt1); // 设置导出编码为utf8。这里必须是utf8
   

// 把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行
InputStream in = Proexec.getInputStream();// 控制台的输出信息作为输入流

InputStreamReader inputStr= new InputStreamReader(in, "utf8");// 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码

String inStr;
StringBuffer sb = new StringBuffer("");
String outStr;
// 组合控制台输出信息字符串

BufferedReader br = new BufferedReader(inputStr);

while ((inStr = br.readLine()) != null) {
sb.append(inStr + "\r\n");

outStr = sb.toString();

System.out.println("inStr0"+outStr);

// 要用来做导入用的sql目标文件:
FileOutputStream fout = new FileOutputStream(filepath);
OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8");
writer.write(outStr);
// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
writer.flush();
// 别忘记关闭输入输出流
in.close();
inputStr.close();
br.close();
writer.close();
fout.close();

    System.out.println("数据已导出到文件" + filepath + "中");

}

catch (IOException e) {

e.printStackTrace();

}

}

}


结果是:outStr 为空,即备份文件Eshop.sql为空,出问题在Process Proexec=Runtime.getRuntime().exec("cmd /c"+stmt1); stmt1命令有问题


还原代码如下:

/*将数据从磁盘上的文本文件还原到MySql中的数据库
*/

import java.io.*;

import java.lang.*;

/* u

* 还原MySql数据库

* */

public class DataImport {

public static void main(String[] args) {

String filepath = "d:\\EShop.sql";

// 备份的路径地址


String stmt1 = "mysqladmin -uroot -padmin create EShop";

String stmt2 = "mysqladmin -uroot -padmin eshop < " + filepath;

//String[] cmd = { "cmd", "/c", stmt2 };

try {

Process proexec=Runtime.getRuntime().exec("cmd /c "+stmt2);

//Runtime.getRuntime().exec(cmd);

OutputStream out = proexec.getOutputStream();//控制台的输入信息作为输出流
String inStr;
StringBuffer sb = new StringBuffer("");
String outStr;
BufferedReader br = new BufferedReader(new InputStreamReader(
        new FileInputStream(filepath), "utf8"));
while ((inStr = br.readLine()) != null) {
    sb.append(inStr + "\r\n");
}
outStr = sb.toString();

OutputStreamWriter writer = new OutputStreamWriter(out, "utf8");

System.out.println("outStr");

writer.write(outStr);

// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
writer.flush();

// 别忘记关闭输入输出流
out.close();
br.close();
writer.close();

System.out.println("数据已从 " + filepath + " 导入到数据库中");

} catch (IOException e) {

e.printStackTrace();

}

}

}


结果是:出现异常java.io.IOException: 管道正在被关闭。
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(Unknown Source)
at java.io.BufferedOutputStream.write(Unknown Source)
at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(Unknown Source)
at sun.nio.cs.StreamEncoder$CharsetSE.implWrite(Unknown Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at java.io.OutputStreamWriter.write(Unknown Source)
at java.io.Writer.write(Unknown Source)
at file.test.DataImport.main(DataImport.java:53)
分享到:
评论

相关推荐

    这是哪种主板 可以升级那种CPU

    机器老旧,想升级CPU 但是要刷BIOS 现在找不到升级文件 现在找到了 但是没积分 急用 求助 感谢了

    脑筋急转弯插件for leadbbs3.14

    这对于用户自行解决问题非常有帮助,减少了向技术支持求助的次数。 总结起来,"脑筋急转弯插件for leadbbs3.14" 是一个旨在增加论坛娱乐性的工具,通过"index.asp"实现游戏功能,"说明.htm"和"help.txt"提供安装和...

    防疫应ۥ急救援预案精选.doc

    - 列出了急救医院、报警和消防的联系方式,以便在紧急情况下迅速求助。 3. 职责与分工: - 组长不仅负责人员调配,还需调查疫情,向相关部门报告,并执行传染病报告制度。 - 副组长协助组长完成各项任务。 - ...

    风险管控清单(设备设施).xlsx

    规范穿着工作服、安全帽、戴防护眼镜、防护手套 1、立即停止运行或按急停;2、无关人员撤至安全区;3、断电、挂牌、安排专人监护;4、发生机械伤害、触电、高处坠落、物体打击事故,立即启动各类事故应急预案,并...

    大虾们都来帮我整整Matlab的Sfunction问题急-QQ截图未命名.rar

    在Matlab中,S函数(Simulink Function)是一种自定义模型组件,允许用户用C、C++或Matlab代码...如果问题仍然存在,尝试在Matlab社区或相关论坛上发帖求助,提供详细的问题描述和代码片段,通常能得到专业用户的帮助。

    C语言算法精华

    Re: Excel 规划求解问题,求助,请教!! anya Re: anya:请教一个问题 anya Re: 如何给汉字分界? anya Re: 八皇后算法问题请教? anya Re: 急寻图象压缩算法 anya 游戏中最佳路径的问题 anya 平面点覆盖问题...

    大班语言非常一加一教案反思.docx

    4. **互动与求助机制**:在难题解答环节,设置求助机制,鼓励幼儿寻求同伴、老师或排除错误答案的帮助,培养他们的合作和解决问题的能力。 5. **学习儿歌**:通过《拍手歌》的形式,让幼儿在轻松愉快的氛围中学习和...

    基于北斗卫星定位的车联网智能影音导航系统设计与应用.pdf

    此外,系统还能对路段要求进行说明和提醒,如车辆行驶速度要求、急转弯、电子警察等情况,规范车主驾驶行为。 监控画面传输功能,可以连接汽车的全景摄像头,对车辆进行全方位监控,并将汽车各个方向的监控画面传输...

    智慧养老服务平台可行性方案.pptx

    整个系统强调24小时公益急寻服务,确保无论何时何地,都能及时为老人提供紧急救助和线下帮扶。 总的来说,智慧养老服务平台的可行性方案旨在通过智能化设备和技术,结合有效的运营模式,为老年人提供高效、便捷、...

    数控维修资料1参考.pdf

    【数控机床维修知识详解】 数控机床的维修涉及多个...故障排查需要细致入微,遵循一定的步骤,必要时求助于制造商的技术支持。通过熟练掌握这些知识点,能更有效地处理数控机床可能出现的各种问题,保证其稳定运行。

    雨天安全友情提示语雨天行车安全提示语.rar

    4. **避免急转弯和急刹**:在湿滑路面上,急转弯和急刹车可能导致车辆打滑,应提前减速,平稳转向。 5. **注意积水**:遇到积水路段,应谨慎驾驶,避免驶入深度未知的水域,以防车辆熄火或被淹。 6. **检查雨刮器*...

    《病毒知识大全》教学电子书

    学术网络上 BBS 的病毒版总是有一堆中了 Taiwan NO.1 的求助信,而且数量惊 人,可见宏病毒有多么流行。然而一如其它病毒,大多数人对宏病毒还是不 了解以至于当中毒时手忙脚乱,不要说手边的工作要停顿下来,甚至病...

    混沌时间序列分析源程序.rar_时间序列_混沌 matlab_混沌时间_混沌时间序列_混沌理论时间序列

    我在论坛上得到了大家的热心帮助,作为一个“过来人”看到论坛上经常有人求助时间序列分析的相关程序,或者想参考,或者是急用,我相信大家也遇到过相似的问题——有些贴出来的程序往往是错误的或者无法运行。...

    电梯安全操作规程.pdf

    出现异常时,司机应按下急停按钮,安抚乘客,通过对讲机或电话求助,并保持冷静。 最后,电梯使用结束后,司机应停在基站,关闭所有开关,确保层门关闭后才能离开。如果电梯具备自动开关门系统,还需用钥匙关闭电源...

    江苏省住宅物业管理服务标准详述.doc

    同时,制定了不同的急修响应时间,如一级急修要求2小时内到场,24小时内修复,特殊情况下需给出限时承诺。 房屋和共用设施设备的维护与管理包括定期检查和保养。例如,每年至少全面检查一次房屋设施,及时发现和...

    基于SpringBoot+Vue+Mysql的校园爱心捐赠互助管理系统(源码+论文)

    对于闲置商品的处理以及贫困学生的捐助都急需要一个线上平台实现义卖及互助信息的传递,通过校园内爱心捐赠和互助行为的培养来创造和谐友爱的校园氛围,同时借助线上平台也可以帮助在校大学生养成节俭的生活习惯,...

    车载复习资料车载复习资料

    - 了解环保驾驶的概念,如节能减排、合理控制车速、避免急加速急刹车等。 - 学习如何降低车辆排放,减少对环境的影响。 车载复习资料通过音频、电子书等形式提供,便于驾驶者在行车过程中听或阅读,不仅增加了...

    医院院内急救制度和流程.doc

    - 应急医疗救援队接到求助后,需尽快到达现场,不超过急会诊规定时间。 3. **急救设备管理**: - 急救车/箱内的急救物品与器材由设备管理人定期检查和维护,确保处于完好备用状态。 - 各科室负责人对急救设备负...

    《信陵君窃符救赵》教案教案-教学教案.docx

    难句解析部分,对一些复杂的句子进行了翻译和解析,例如“胜所以自附为婚姻者,以公子之高义,为能急人之困”,解释了赵胜与信陵君结为姻亲的原因在于公子的高尚品德和急他人之难的品质。这些解析有助于学生更好地...

Global site tag (gtag.js) - Google Analytics