使用java实现sql文件的执行

使用Java实现导出导入数据库的sql文件

实际原理是利用java中的runtime类来开启操作系统的命令行进程执行导出导入数据库的dos命令来完成的

1.了解相关的导入和导出的dos命令

  • 简单介绍一下MYSQL命令:

      mysql->CREATE DATABASE dbname;//创建数据库
      mysql->CREATE TABLE tablename;//创建表
      mysql->SHOW DATABASES;//显示数据库信息,有那些可用的数据库。
      mysql->USE dbname;//选择数据库
      mysql->SHOW TABLES;//显示表信息,有那些可用的表
      mysql->DESCRIBE tablename;//显示创建的表的信息
    
  • 从数据库导出数据库文件:

    • 将数据库mydb导出到e:\mysql\mydb.sql文件中:

      打开开始->运行->输入cmd 进入命令行模式
      c:>mysqldump -h localhost -u root -p mydb >e:\mysql\mydb.sql
      然后输入密码,等待一会导出就成功了,可以到目标文件中检查是否成功。

    • 将数据库mydb中的mytable导出到e:\mysql\mytable.sql文件中:

      c:>mysqldump -h localhost -u root -p mydb mytable>e:\mysql\mytable.sql

    • 将数据库mydb的结构导出到e:\mysql\mydb_stru.sql文件中:

      c:>mysqldump -h localhost -u root -p mydb --add-drop-table >e:\mysql\mydb_stru.sql

    • c:>mysqldump -h localhost -u root -p root mydb >e:\mysql\mydb.sql不需要输入密码即可导入,我们一般使用这条dos命令

2. 使用Java导出Sql脚本

  • a.相关导出的properties配置文件

    jdbc.host=127.0.0.1
    jdbc.user=root
    jdbc.password= 输入你要连接的用户对应的密码
    jdbc.exportDatabaseName=test
    jdbc.port=3306
    jdbc.exportPath=e:\\mysql\\test.sql
    
  • b.导出的方法:

    • 创建ImportProperties类

      package com.four;
      import java.io.InputStreamReader;
      import java.util.Enumeration;
      import java.util.HashMap;
      import java.util.Map;
      import java.util.Properties;
      
      public class ImportProperties {
          //获取配置文件属性
          public Map<String, String> proRead(String proName){
              Properties pro = new Properties();
              Map<String, String> mpro = new HashMap<String, String>();
              InputStreamReader isr=null;
              try {
                  isr = new InputStreamReader(getClass().getResourceAsStream(proName),"UTF-8");
                  pro.load(isr);
                  //@SuppressWarnings("rawtypes")
                  Enumeration en=pro.propertyNames();
                  while (en.hasMoreElements()) {
                      String key=(String) en.nextElement();
                      String value=pro.getProperty(key);
                      mpro.put(key, value);
                  }
                  return mpro;
              } catch (Exception e1) {
                  // TODO Auto-generated catch block
                  e1.printStackTrace();
              }
              return null;
          }
      }
      
    • 创建导出Sql类SqlExport

      注意:导出目录需在磁盘存在,否则无法正常导出sql脚本


      import java.io.IOException;
      import java.util.Map;
      
      public class SqlExport {
      
          //配置文件路径及导出方法的调用
          public static void main(String[] args) {
              ImportProperties importProperties = new ImportProperties();
              String proName = "/exportUrl.properties";
              Map<String, String> map = importProperties.proRead(proName);
              exportSql(map);
          }
          
          //导出sql脚本
          public static void exportSql(Map<String, String> map){
              String user = map.get("jdbc.user");
              String password = map.get("jdbc.password");
              String host = map.get("jdbc.host");
              String exportDatabaseName = map.get("jdbc.exportDatabaseName");
              String exportPath = map.get("jdbc.exportPath");
              //使用拼接的方式来完成dos命令
              String command = new String("cmd /k mysqldump -u"+user+" -p"+password+" "+exportDatabaseName+" >"+exportPath);
              //执行命令行
              Runtime runtime = Runtime.getRuntime();
              try {
                  //cmd /k在执行命令后不关掉命令行窗口  cmd /c在执行完命令行后关掉命令行窗口   \\表示转译符也可使用/替代,linux使用/
                  Process process = runtime.exec(command);
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
      }
      

      直到该步骤即可完成指定的sql文件的导出工作

3. Java调用dos命令完成Sql文件的导入

  • 从外部文件导入数据到数据库中(命令行实现 ):

    从e:\mysql\test.sql中将文件中的SQL语句导入数据库中:

    1.从命令行进入mysql,然后用命令CREATE DATABASE test2;创建数据库test2。

    2.退出mysql 可以输入命令exit;或者quit;

    3.在CMD中输入下列命令:

    c:>mysql -h localhost -u root -p test2< e:\mysql\test.sql

    然后输入密码,就OK了

  • 使用Java代码完成数据库的sql文件导入

    • 导入sql文件的配置文件

      jdbc.host=127.0.0.1
      jdbc.user=root
      jdbc.password=15003892179
      jdbc.exportDatabaseName=test2
      jdbc.port=3306
      jdbc.exportPath=e\:\\mysql\\test.sql
      
    • 创建ImportProperties类

      package com.four;
      import java.io.InputStreamReader;
      import java.util.Enumeration;
      import java.util.HashMap;
      import java.util.Map;
      import java.util.Properties;
      
      public class ImportProperties {
          //获取配置文件属性
          public Map<String, String> proRead(String proName){
              Properties pro = new Properties();
              Map<String, String> mpro = new HashMap<String, String>();
              InputStreamReader isr=null;
              try {
                  isr = new InputStreamReader(getClass().getResourceAsStream(proName),"UTF-8");
                  pro.load(isr);
                  //@SuppressWarnings("rawtypes")
                  Enumeration en=pro.propertyNames();
                  while (en.hasMoreElements()) {
                      String key=(String) en.nextElement();
                      String value=pro.getProperty(key);
                      mpro.put(key, value);
                  }
                  return mpro;
              } catch (Exception e1) {
                  // TODO Auto-generated catch block
                  e1.printStackTrace();
              }
              return null;
          }
      }
      
    • 创建导入Sql文件类

      import java.io.IOException;
      import java.util.Map;
      
      public class SqlImport {
      
          public static void main(String[] args) {
              ImportProperties importProperties = new ImportProperties();
              String proName = "/importSql.properties";
              Map<String, String> map = importProperties.proRead(proName);
              importSql(map);
          }
      
          public static void importSql(Map<String, String> map){
              String user = map.get("jdbc.user");
              String password = map.get("jdbc.password");
              String host = map.get("jdbc.host");
              String exportDatabaseName = map.get("jdbc.exportDatabaseName");
              String exportPath = map.get("jdbc.exportPath");
              String command = new String("cmd /k mysql"+" -h"+host+" -u"+user+" -p"+password+" "+exportDatabaseName+" <"+exportPath);
      
              //执行命令行
              Runtime runtime = Runtime.getRuntime();
              try {
                  //cmd /k在执行命令后不关掉命令行窗口  cmd /c在执行完命令行后关掉命令行窗口   \\表示转译符也可使用/替代,linux使用/
                  Process process = runtime.exec(command);
                  System.out.println("导入成功》》》》》》》》》》》》》》》");
              } catch (IOException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
          }
      }
      

      到此为止即可完成sql文件导入mysql数据库的步骤了

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值