首先在这之前,我将mysql数据库的密码、用户名等一些信息保存在对应的工程的属性文件中,以便在之后调用。
还有就是导出的一个数据库中包含的是多个表格,以数据库为单位导出,

这里记录一下属性文件的创建过程
在工程的 src 文件下右击选择 new ->file -> 文件名以 .properties 结尾就可以了

属性文件的内容

jdbc.host=127.0.0.1    // localhost 
jdbc.exportDatabaseName=students  //  要导出的数据库名称
jdbc.password=123456  //  数据库密码
jdbc.importPath=/Users/sz/Desktop/students.sql // 要导入的数据库所在路径
jdbc.port=3306  //  端口号 
MysqlPath=/usr/local/mysql/bin/  //mysql下的bin文件的路径  
jdbc.exportPath=/Users/sz/Desktop/students.sql // 导出的数据库存放路径
jdbc.username=root  //  用户名
jdbc.importDatabaseName=DesignModel  // 要导入的目标数据库

代码如下:

package dataInput;

import java.io.IOException;
import java.io.*;
import java.util.Properties;


public class ImportAndExport { 

     // 实现数据库的导出
     public static void exportSql() throws IOException{
         Properties properties = new Properties();  
           //  读取属性文件
         properties.load(Import.class.getClassLoader().getResourceAsStream("jdbc.properties")); 
         Runtime runtime = Runtime.getRuntime();  
         String command = getExportCommand(properties);  
         //  这里其实是在命令窗口中执行的 command 命令行
         runtime.exec(command); 
     }
     // 实现数据库的导入
    public static void importSql() throws IOException { 
        Properties properties = new Properties();  
        //  读取属性文件
        properties.load(Import.class.getClassLoader().getResourceAsStream("jdbc.properties")); 

        Runtime runtime = Runtime.getRuntime();  
        //把所执行的命令将以字符串数组的形式出现  
        String cmdarray[] = getImportCommand(properties);//根据属性文件的配置获取数据库导入所需的命令,组成一个数组  
        Process process = runtime.exec(cmdarray[0]);  

        //执行了第一条命令以后已经登录到mysql了,所以之后就是利用mysql的命令窗口  

        java.io.OutputStream os = process.getOutputStream();  
        OutputStreamWriter writer = new OutputStreamWriter(os);  
        //命令1和命令2要放在一起执行 
        // 这里会执行后面的代码, 将命令输出到mysql的命令窗口,进行执行
        writer.write(cmdarray[1] + "\r\n" + cmdarray[2]); 
        writer.flush();  
        writer.close();  
        os.close();  
    }  

       // 得到 导入 数据库的命令
      //  得到 导入数据 的 命令行语句
     private static String[] getImportCommand(Properties properties) {  

            String username = properties.getProperty("jdbc.username");//用户名  
            String password = properties.getProperty("jdbc.password");//密码  
            String host = properties.getProperty("jdbc.host");//导入的目标数据库所在的主机  
            String port = properties.getProperty("jdbc.port");//使用的端口号  
            String importDatabaseName = properties.getProperty("jdbc.importDatabaseName");//导入的目标数据库的名称  
            String importPath = properties.getProperty("jdbc.importPath");//导入的目标文件所在的位置  
            String MysqlPath = properties.getProperty("MysqlPath"); //  路径是mysql中 bin 文件 的位置

            //第一步,获取登录命令语句  
            String loginCommand = new StringBuffer().append(MysqlPath).append("mysql -h").append(host).append(" -u").append(username).append(" -p").append(password)  
            .append(" -P").append(port).toString(); 
            //第二步,获取切换数据库到目标数据库的命令语句  
            String switchCommand = new StringBuffer().append("use ").append(importDatabaseName).toString();  
            //第三步,获取导入的命令语句  
            String importCommand = new StringBuffer(" source ").append(importPath).toString();  
            //需要返回的命令语句数组           

           String[] commands = new String[] {loginCommand, switchCommand, importCommand};

            return commands;  
        }  
    //  得到 导出数据 的 命令行语句

      private static String getExportCommand(Properties properties) {  

            StringBuffer command = new StringBuffer();  
            String username = properties.getProperty("jdbc.username");//用户名
            String password = properties.getProperty("jdbc.password");//用户密码  
            String exportDatabaseName = properties.getProperty("jdbc.exportDatabaseName");//需要导出的数据库名  
            String host = properties.getProperty("jdbc.host");//从哪个主机导出数据库,如果没有指定这个值,则默认取localhost  
            String port = properties.getProperty("jdbc.port");//使用的端口号 
            String exportPath = properties.getProperty("jdbc.exportPath");//导出路径
            String MysqlPath = properties.getProperty("MysqlPath"); //  路径是mysql中 bin 文件 的位置

            //注意哪些地方要空格,哪些不要空格  
            command.append(MysqlPath).append("mysqldump -u").append(username).append(" -p").append(password)//密码是用的小p,而端口是用的大P。  
            .append(" -h").append(host).append(" -P").append(port).append(" ").append(exportDatabaseName).append(" -r ").append(exportPath);  

            return command.toString();  
        }


}

有错误地方希望指出。

更多推荐

java操作:mysql数据库导入、导出