您好,欢迎来到思海网络,我们将竭诚为您提供优质的服务! 诚征网络推广 | 网站备案 | 帮助中心 | 软件下载 | 购买流程 | 付款方式 | 联系我们 [ 会员登录/注册 ]
促销推广
客服中心
业务咨询
有事点击这里…  531199185
有事点击这里…  61352289
点击这里给我发消息  81721488
有事点击这里…  376585780
有事点击这里…  872642803
有事点击这里…  459248018
有事点击这里…  61352288
有事点击这里…  380791050
技术支持
有事点击这里…  714236853
有事点击这里…  719304487
有事点击这里…  1208894568
有事点击这里…  61352289
在线客服
有事点击这里…  531199185
有事点击这里…  61352288
有事点击这里…  983054746
有事点击这里…  893984210
当前位置:首页 >> 技术文章 >> 文章浏览
技术文章

如何利用Java进行MySql数据库的导入和导出

添加时间:2012-6-25  添加: admin 

利用Java来进行Mysql数据库的导入和导出的总体思想是通过Java来调用命令窗口执行相应的命令。

MySql导出数据库的命令如下:

mysqldump -uusername -ppassword -hhost -Pport exportDatabaseName > exportPath 利用Java调用命令窗口执行命令来进行MySql导入数据库一般分三步走:

第一步:登录Mysql数据库,在登录数据库的时候也可以指定登录到哪个数据库,如果指定了则可以跳过第二步;

第二步:切换数据库到需要导入的目标数据库

第三步:利用命令开始导入

在进行导出的时候,需要注意命令语句的运行环境,如果已经将mysql安装路径下的bin加入到

系统的path变量中,那么在导出的时候可以直接使用命令语句,否则,就需要在执行命令语句的

时候加上命令所在位置的路径,即mysql安装路径想的bin下的mysqldump命令。

基本代码如下:

import java.io.IOException;  import java.io.InputStream;  import java.io.OutputStream;  import java.io.OutputStreamWriter;  import java.util.Properties;   /**   * 在进行导出的时候,需要注意命令语句的运行环境,如果已经将mysql安装路径下的bin加入到   * 系统的path变量中,那么在导出的时候可以直接使用命令语句,否则,就需要在执行命令语句的   * 时候加上命令所在位置的路径,即mysql安装路径想的bin下的mysqldump命令   * @author andy   *   */ public class MySqlImportAndExport {       public static void main(String args[]) throws IOException {          InputStream is = MySqlImportAndExport.class.getClassLoader().getResourceAsStream("jdbc.properties");          Properties properties = new Properties();          properties.load(is);  //      MySqlImportAndExport.export(properties);//这里简单点异常我就直接往上抛          MySqlImportAndExport.importSql(properties);      }            /**       * 根据属性文件的配置导出指定位置的指定数据库到指定位置       * @param properties       * @throws IOException       */     public static void export(Properties properties) throws IOException {          Runtime runtime = Runtime.getRuntime();          String command = getExportCommand(properties);          runtime.exec(command);//这里简单一点异常我就直接往上抛      }            /**       * 根据属性文件的配置把指定位置的指定文件内容导入到指定的数据库中       * 在命令窗口进行mysql的数据库导入一般分三步走:       * 第一步是登到到mysql; mysql -uusername -ppassword -hhost -Pport -DdatabaseName;如果在登录的时候指定了数据库名则会       * 直接转向该数据库,这样就可以跳过第二步,直接第三步;        * 第二步是切换到导入的目标数据库;use importDatabaseName;       * 第三步是开始从目标文件导入数据到目标数据库;source importPath;       * @param properties       * @throws IOException        */     public static void importSql(Properties properties) throws IOException {          Runtime runtime = Runtime.getRuntime();          //因为在命令窗口进行mysql数据库的导入一般分三步走,所以所执行的命令将以字符串数组的形式出现          String cmdarray[] = getImportCommand(properties);//根据属性文件的配置获取数据库导入所需的命令,组成一个数组          //runtime.exec(cmdarray);//这里也是简单的直接抛出异常          Process process = runtime.exec(cmdarray[0]);          //执行了第一条命令以后已经登录到mysql了,所以之后就是利用mysql的命令窗口          //进程执行后面的代码          OutputStream os = process.getOutputStream();          OutputStreamWriter writer = new OutputStreamWriter(os);          //命令1和命令2要放在一起执行          writer.write(cmdarray[1] + "\r\n" + cmdarray[2]);          writer.flush();          writer.close();          os.close();      }            /**       * 利用属性文件提供的配置来拼装命令语句       * 在拼装命令语句的时候有一点是需要注意的:一般我们在命令窗口直接使用命令来       * 进行导出的时候可以简单使用“>”来表示导出到什么地方,即mysqldump -uusername -ppassword databaseName > exportPath,       * 但在Java中这样写是不行的,它需要你用-r明确的指出导出到什么地方,如:       * mysqldump -uusername -ppassword databaseName -r exportPath。       * @param properties       * @return       */     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");//导出路径                    //注意哪些地方要空格,哪些不要空格          command.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();      }            /**       * 根据属性文件的配置,分三步走获取从目标文件导入数据到目标数据库所需的命令       * 如果在登录的时候指定了数据库名则会       * 直接转向该数据库,这样就可以跳过第二步,直接第三步;        * @param properties       * @return       */     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 loginCommand = new StringBuffer().append("mysql -u").append(username).append(" -p").append(password).append(" -h").append(host)          .append(" -P").append(port).toString();          //第二步,获取切换数据库到目标数据库的命令语句          String switchCommand = new StringBuffer("use ").append(importDatabaseName).toString();          //第三步,获取导入的命令语句          String importCommand = new StringBuffer("source ").append(importPath).toString();          //需要返回的命令语句数组          String[] commands = new String[] {loginCommand, switchCommand, importCommand};          return commands;      }        } 上述使用的jdbc.properties文件

jdbc.username=root  jdbc.password=password jdbc.host=localhost  jdbc.port=3306  jdbc.exportDatabaseName=dbName  jdbc.exportPath=d\:\\dbName.sql  jdbc.importDatabaseName=test  jdbc.importPath=d\:\\dbName.sql

关键字:Java、MySql数据库、导入和导出

分享到:

顶部 】 【 关闭
版权所有:佛山思海电脑网络有限公司 ©1998-2024 All Rights Reserved.
联系电话:(0757)22630313、22633833
中华人民共和国增值电信业务经营许可证: 粤B1.B2-20030321 备案号:粤B2-20030321-1
网站公安备案编号:44060602000007 交互式栏目专项备案编号:200303DD003  
察察 工商 网安 举报有奖  警警  手机打开网站