来源:http://www.51testing.com/html/89/n-807989.html

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

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

mysqldump -uusername -ppassword -hhost -Pport exportDatabaseName > exportPath

  利用Java调用命令窗口执行命令来进行MySql导入数据库一般分三步走:

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

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

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

  在进行导出的时候,需要注意命令语句的运行环境,如果已经将mysql安装路径下的bin加入到系统的path变量中,那么在导出的时候可以直接使用命令语句,否则,就需要在执行命令语句的时候加上命令所在位置的路径,即mysql安装路径想的bin下的mysqldump命令。

  基本代码如下:

  1. import java.io.IOException;
  2. import java.io.InputStream;
  3. import java.io.OutputStream;
  4. import java.io.OutputStreamWriter;
  5. import java.util.Properties;
  6. /**
  7. * 在进行导出的时候,需要注意命令语句的运行环境,如果已经将mysql安装路径下的bin加入到
  8. * 系统的path变量中,那么在导出的时候可以直接使用命令语句,否则,就需要在执行命令语句的
  9. * 时候加上命令所在位置的路径,即mysql安装路径想的bin下的mysqldump命令
  10. * @author andy
  11. *
  12. */
  13. public class MySqlImportAndExport {
  14. public static void main(String args[]) throws IOException {
  15. InputStream is = MySqlImportAndExport.class.getClassLoader().getResourceAsStream("jdbc.properties");
  16. Properties properties = new Properties();
  17. properties.load(is);
  18. //      MySqlImportAndExport.export(properties);//这里简单点异常我就直接往上抛
  19. MySqlImportAndExport.importSql(properties);
  20. }
  21. /**
  22. * 根据属性文件的配置导出指定位置的指定数据库到指定位置
  23. * @param properties
  24. * @throws IOException
  25. */
  26. public static void export(Properties properties) throws IOException {
  27. Runtime runtime = Runtime.getRuntime();
  28. String command = getExportCommand(properties);
  29. runtime.exec(command);//这里简单一点异常我就直接往上抛
  30. }
  31. /**
  32. * 根据属性文件的配置把指定位置的指定文件内容导入到指定的数据库中
  33. * 在命令窗口进行mysql的数据库导入一般分三步走:
  34. * 第一步是登到到mysql; mysql -uusername -ppassword -hhost -Pport -DdatabaseName;如果在登录的时候指定了数据库名则会
  35. * 直接转向该数据库,这样就可以跳过第二步,直接第三步;
  36. * 第二步是切换到导入的目标数据库;use importDatabaseName;
  37. * 第三步是开始从目标文件导入数据到目标数据库;source importPath;
  38. * @param properties
  39. * @throws IOException
  40. */
  41. public static void importSql(Properties properties) throws IOException {
  42. Runtime runtime = Runtime.getRuntime();
  43. //因为在命令窗口进行mysql数据库的导入一般分三步走,所以所执行的命令将以字符串数组的形式出现
  44. String cmdarray[] = getImportCommand(properties);//根据属性文件的配置获取数据库导入所需的命令,组成一个数组
  45. //runtime.exec(cmdarray);//这里也是简单的直接抛出异常
  46. Process process = runtime.exec(cmdarray[0]);
  47. //执行了第一条命令以后已经登录到mysql了,所以之后就是利用mysql的命令窗口
  48. //进程执行后面的代码
  49. OutputStream os = process.getOutputStream();
  50. OutputStreamWriter writer = new OutputStreamWriter(os);
  51. //命令1和命令2要放在一起执行
  52. writer.write(cmdarray[1] + "\r\n" + cmdarray[2]);
  53. writer.flush();
  54. writer.close();
  55. os.close();
  56. }
  57. /**
  58. * 利用属性文件提供的配置来拼装命令语句
  59. * 在拼装命令语句的时候有一点是需要注意的:一般我们在命令窗口直接使用命令来
  60. * 进行导出的时候可以简单使用“>”来表示导出到什么地方,即mysqldump -uusername -ppassword databaseName > exportPath,
  61. * 但在Java中这样写是不行的,它需要你用-r明确的指出导出到什么地方,如:
  62. * mysqldump -uusername -ppassword databaseName -r exportPath。
  63. * @param properties
  64. * @return
  65. */
  66. private static String getExportCommand(Properties properties) {
  67. StringBuffer command = new StringBuffer();
  68. String username = properties.getProperty("jdbc.username");//用户名
  69. String password = properties.getProperty("jdbc.password");//用户密码
  70. String exportDatabaseName = properties.getProperty("jdbc.exportDatabaseName");//需要导出的数据库名
  71. String host = properties.getProperty("jdbc.host");//从哪个主机导出数据库,如果没有指定这个值,则默认取localhost
  72. String port = properties.getProperty("jdbc.port");//使用的端口号
  73. String exportPath = properties.getProperty("jdbc.exportPath");//导出路径
  74. //注意哪些地方要空格,哪些不要空格
  75. command.append("mysqldump -u").append(username).append(" -p").append(password)//密码是用的小p,而端口是用的大P。
  76. .append(" -h").append(host).append(" -P").append(port).append(" ").append(exportDatabaseName).append(" -r ").append(exportPath);
  77. return command.toString();
  78. }
  79. /**
  80. * 根据属性文件的配置,分三步走获取从目标文件导入数据到目标数据库所需的命令
  81. * 如果在登录的时候指定了数据库名则会
  82. * 直接转向该数据库,这样就可以跳过第二步,直接第三步;
  83. * @param properties
  84. * @return
  85. */
  86. private static String[] getImportCommand(Properties properties) {
  87. String username = properties.getProperty("jdbc.username");//用户名
  88. String password = properties.getProperty("jdbc.password");//密码
  89. String host = properties.getProperty("jdbc.host");//导入的目标数据库所在的主机
  90. String port = properties.getProperty("jdbc.port");//使用的端口号
  91. String importDatabaseName = properties.getProperty("jdbc.importDatabaseName");//导入的目标数据库的名称
  92. String importPath = properties.getProperty("jdbc.importPath");//导入的目标文件所在的位置
  93. //第一步,获取登录命令语句
  94. String loginCommand = new StringBuffer().append("mysql -u").append(username).append(" -p").append(password).append(" -h").append(host)
  95. .append(" -P").append(port).toString();
  96. //第二步,获取切换数据库到目标数据库的命令语句
  97. String switchCommand = new StringBuffer("use ").append(importDatabaseName).toString();
  98. //第三步,获取导入的命令语句
  99. String importCommand = new StringBuffer("source ").append(importPath).toString();
  100. //需要返回的命令语句数组
  101. String[] commands = new String[] {loginCommand, switchCommand, importCommand};
  102. return commands;
  103. }
  104. }

  上述使用的jdbc.properties文件

  1. jdbc.username=root
  2. jdbc.password=password
  3. jdbc.host=localhost
  4. jdbc.port=3306
  5. jdbc.exportDatabaseName=dbName
  6. jdbc.exportPath=d\:\\dbName.sql
  7. jdbc.importDatabaseName=test
  8. jdbc.importPath=d\:\\dbName.sql

利用Java进行MySql数据库的导入和导出相关推荐

  1. java导出mysql数据库失败_利用Java进行MySql数据库的导入和导出

    利用Java来进行Mysql数据库的导入和导出的总体思想是通过Java来调用命令窗口执行相应的命令. MySql导出数据库的命令如下: mysqldump -uusername -ppassword  ...

  2. java实现 mysql导入_怎么用java实现mysql数据库的导入导出

    匿名用户 1级 2018-11-21 回答 使用Java实现对MySql数据库的导入与导出 package com.project.ajaxs; import java.io.BufferedRead ...

  3. mysql 数据库的导入和导出

    mysql 数据库的导入和导出 视频 https://www.bilibili.com/video/BV1tV411o7zv?from=search&seid=2492452830997848 ...

  4. mysql 数据库文件导入和导出、远程上传和下载数据库

    1.打开数据库操作软件:Navicat Premium 15 中文版,登录测试连接! 2.打开本地mysql 数据库,新建数据库的名字必须和要导入的数据库名字一致.字符集和排 序规则按下图设置即可.

  5. mysql 数据库的 导入于导出

    ====================================================================备份(导出)操作======================== ...

  6. java对mysql查询_如何利用java对mysql数据库进行增删改查

    代码如下: 增: @Test //数据插入 public void demo1() { Connection conn=null; Statement stmt=null; try { //注册驱动 ...

  7. 如何利用java对mysql数据库进行增删改查

    java-mysql 前提: 增: 删: 改: 查: 前提: 首先要对java与数据库进行连接哦! 连接步骤 https://blog.csdn.net/hanhanwanghaha/article/ ...

  8. 利用java和mysql数据库创建学生信息管理系统

    相关介绍 管理系统的使用可以大大提高我们的工作效率,给我们的生活带来极大的便利,因此我们在学习编程语言的时候大多是要学习和实现一个管理系统的创建的. 学生信息管理系统是进一步推进学生学籍管理规范化.电 ...

  9. c mysql封装 jdbc_利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现

    最近看老罗的视频,跟着完成了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口 ...

最新文章

  1. 变量的存储类别以及作用空间
  2. Docker安装Logstash7.7.0
  3. 【最新合集】编译原理习题(含答案)_8-10语法制导翻译_MOOC慕课 哈工大陈鄞
  4. mkcramfs 命令学习
  5. 没错,继事理图谱后,我们又搞事情了:数地工场自然语言处理语义开放平台正式对外发布!
  6. Intel 4004,世界上首个CPU,进不惑之年
  7. ExtJS 4.2 教程-07:Ext.Direct
  8. Maven无法下载远程依赖-强制下载也不行
  9. 通过 MySQL 二进制日志恢复删除的记录
  10. JVM,JRE,JDK之间的区别和联系
  11. 【写作技巧】毕业论文结构一文通
  12. 日本定了一个小目标,在2030年让五分之一的汽车实现自动驾驶
  13. mysql专业连接工具_mysql(MySQL客户端连接工具)
  14. iOS - Carthage的安装和使用,以及常见报错解决
  15. 微信小程序:实现微信登录
  16. Yocto(一)-介绍
  17. 用asp.net发送电子邮件
  18. 设备 naa.6006016004102900751132ac8de3e211 性能降低。
  19. 计算机硬盘一只闪烁,硬盘灯一直亮,小编教你电脑硬盘指示灯一直亮怎么办
  20. SDN概述:简介、工具、环境部署

热门文章

  1. 【深入JavaScript】3.JavaScript继承的实现总结
  2. 随机化算法-----模拟退火
  3. asp.net发送邮件
  4. 利用EVC快速开发WINCE5.0的流驱动(转载)
  5. 判断一个数组中的值是否在另一个数组中
  6. 代码生成器的存在价值 选择自 mechiland 的 Blog
  7. 如何用html构建ios应用,使用HTML5构建iOS原生APP
  8. 剑指offer(17)树的子结构
  9. 3、AD使用技巧分享
  10. 虚拟机ubuntu安装ssh服务器,经过Xshell远程链接虚拟机VMVARE中的Ubuntu