使用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;//显示创建的表的信息

从数据库导出数据库文件:
(1).将数据库mydb导出到e:\mysql\mydb.sql文件中:
打开开始->运行->输入cmd 进入命令行模式
c:\>mysqldump -h localhost -u root -p mydb >e:\mysql\mydb.sql
然后输入密码,等待一会导出就成功了,可以到目标文件中检查是否成功。
(2).将数据库mydb中的mytable导出到e:\mysql\mytable.sql文件中:
c:\>mysqldump -h localhost -u root -p mydb mytable>e:\mysql\mytable.sql
(3).将数据库mydb的结构导出到e:\mysql\mydb_stru.sql文件中:

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

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

案列:a.相关导出的properties配置文件

jdbc.host=127.0.0.1
jdbc.user=root
jdbc.password=root
jdbc.exportDatabaseName=edu
jdbc.port=3306

jdbc.exportPath=e\:\\mysql\\edu.sql

b.导出的方法:

//获取配置文件属性

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;
        
    }
        
        
    //配置文件路径及导出方法的调用
    public static void main(String[] args) {
        ExportSql exportSql = new ExportSql();
        String proName = "/com/rbb/properties/exportUrl.properties";
        Map<String, String> map = exportSql.proRead(proName);
        exportSql(map);
        
    }



    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) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        

    }


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

2.java调用dos命令完成sql文件的导入

(1).从外部文件导入数据到数据库中:
从e:\mysql\mydb2.sql中将文件中的SQL语句导入数据库中:
1.从命令行进入mysql,然后用命令CREATE DATABASE mydb2;创建数据库mydb2。
2.退出mysql 可以输入命令exit;或者quit;
3.在CMD中输入下列命令:
c:\>mysql -h localhost -u root -p mydb2 < e:\mysql\mydb2.sql

然后输入密码,就OK了

(2).c:\>mysql -h localhost -u root -p root mydb2 < e:\mysql\mydb2.sql即可完成不需要输入密码的步骤

a.导入sql文件的配置

jdbc.host=127.0.0.1
jdbc.user=root
jdbc.password=root
jdbc.exportDatabaseName=edu
jdbc.port=3306

jdbc.exportPath=e\:\\mysql\\edu.sql

b.开始导入

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;
        
    }
        
        
    
    public static void main(String[] args) {
        ExportSql exportSql = new ExportSql();
        String proName = "/com/rbb/properties/importUrl.properties";
        Map<String, String> map = exportSql.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数据库的步骤了


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值