java调用mysqldump生产备份文件为空的问题

今天试着写了一个java小程序,功能是调用windows下的mysqldump对某个数据库进行备份,代码如下,注意红色部分.

import java.sql.*;
import java.io.*;

public class MqldumpTest {
 public static void main(String[] args) {
  try {
   String url = "jdbc:mysql://localhost/hxl";
   String user = "root";
   String pwd = "mysql";

// 加载驱动,这一句也可写为:Class.forName("com.mysql.jdbc.Driver");
   Class.forName("com.mysql.jdbc.Driver").newInstance();
   // 建立到MySQL的连接
   Connection conn = DriverManager.getConnection(url, user, pwd);

// 执行SQL语句
   Statement stmt = conn.createStatement();// 创建语句对象,用以执行sql语言
   ResultSet rs = stmt
     .executeQuery("select schema_name db_name from information_schema.SCHEMATA where schema_name=‘hxl‘ ");

// 处理结果集
   while (rs.next()) {
    String l_db_name = rs.getString("db_name");
    System.out.println(l_db_name);
    
    String command = "cmd /C mysqldump -h localhost -uroot -pmysql  --default-character-set=gbk --single-transaction --databases hxl>E:\\mysqlbak\\hxl_bak_20140915.sql" ;
    System.out.println(command);
    Runtime r = Runtime.getRuntime();
    
    Process p = r.exec(command);
    
   }
   rs.close();// 关闭数据库
   conn.close();
  } catch (Exception ex) {
   System.out.println("Error : " + ex.toString());
  }
 }
}

如上程序执行成功了,但问题是生成的备份文件是0字节,这里mysqldump是自己调用mysql安装路径下的C:\Program Files\MySQL\MySQL Server 5.5\bin,网上查了说是路径有空格的问题,我试着将mysqldump.exe拷贝一份到c:\mysqldump\目录下,确保该路径没有空格,然后修改java代码里的代码,之间指定运行C:\mysqldump\mysqldump.exe,修改如下
String command = "cmd /C C:\\MOTOR OIL\\mysqldump -h localhost -uroot -pmysql  --default-character-set=gbk --single-transaction --databases hxl>E:\\mysqlbak\\hxl_bak_20140915.sql" ;

再次运行后,正常生成了备份文件.

-- The End --

时间: 2024-11-05 23:20:01

java调用mysqldump生产备份文件为空的问题的相关文章

Java 调用Mysql dump 备份数据库

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); try { String name = sdf.format(new Date()); String filePath = System.getProperty("user.dir") + "//" + name + ".sql"; // 系统执行器 Runtime rt = Runtime.getRu

Android JNI之JAVA调用C/C++层

摘要: 转载请声明:原文转自:http://www.cnblogs.com/xiezie/p/5929996.html 一.java调用本地函数的开发步骤: 1.编写本地方法的类(可以说是用来叙述本地方法的类): 2.编译这个类,生成该类的.class文件 在Android Studio下有很多方法: 点击Make Project Clean Project + Rebuild Project 运行或Debug  APP 3.用javah命令生成该.class文件的.h头文件 在Android

Alex 的 Hadoop 菜鸟教程: 第11课 Hive的Java调用

声明 本文基于Centos 6.x + CDH 5.x 说到Hive就一定要说到写程序的时候怎么调用Hive.以下我通过一个例子说明如果通过java来调用hive查询数据 数据准备 建立一个文本文件叫 a.txt,内容是 1,terry 2,alex 3,jimmy 4,mike 5,kate 并上传到hive服务器的  /data/ 目录下 JDBC调用方法 加载Driver 加载driver (只说hive2的jdbc) Class.forName("org.apache.hive.jdbc

MyElipse6.5环境下java调用vs2010动态链接库DLL人脸检测

Java调用C++动态链接库的网络上的文章也很多,但是还是有个别的问题没有提到,导致操作起来还是难度较大,关键是程序的疑难杂症不好治. 准备工具:vs2010,java1.6,MyElipse6.5,opencv2.4.6(其他版本请留意程序中的版本号),摄像头. 操作流程,流水式操作: 1.先建立文件FaceDetect.java文件并通过指令生成.h头文件 FaceDetect.java的代码: public class FaceDetect { static { System.loadLi

Unity3D 调用Java,Java调用Unity3D

1.无返回值 AndroidJavaClass fee = new AndroidJavaClass("com.wiker.Test"); fee.CallStatic("print", "Hello", "World"); Java源代码 package  com.wiker public class Test{ public static void print(String str1,String str2){ Syste

Java调用本地接口

先从一个经典例子说起,Java如何调用本地接口. 步骤如下: 1.创建HelloWorld.java [java] view plaincopy class HelloWorld { static{ System.loadLibrary("HelloWorld"); } public native void myprint(); public static void main(String[] args) { new HelloWorld().myprint(); } } 2.编译生成

bat文件【java调用】

Runtime.getRuntime().exec("cmd /c del c:\\a.doc");   //Runtime.getRuntime().exec("notepad");  //Runtime.getRuntime().exec("cmd /c start c:\\a.doc");  //Runtime.getRuntime().exec("cmd /c start http://www.baidu.com");

Java 调用 shell 脚本详解

这一年的项目中,有大量的场景需要Java 进程调用 Linux的bash shell 脚本实现相关功能. 从之前的项目中拷贝的相关模块和网上的例子来看,有个别的"陷阱"造成调用shell 脚本在某些特殊的场景下,有一些奇奇怪怪的bug. 大家且听我一一道来. 先看看网上搜索到的例子: [java] view plain copy package someTest; import java.io.BufferedReader; import java.io.IOException; im

Java 调用翻译软件实现英文文档翻译

前言: 因最近要进行OCP的考试准备.看着大堆英文文档确实有些疼痛.又因文档内容有点大,又需要逐一去翻译 又很费时费力.于是 百度了一番,找到一些 可以使用Java来调用百度翻译软件的API( 注:(官方标注)每月前200万字不要钱,49元/月) .于是就自己手动的修改了一番.然后就使用. Java调用百度API实现翻译 百度官方API 访问地址:http://api.fanyi.baidu.com/api/trans/product/apidoc 百度官方计费声明: 下面是Java调用百度AP