您的位置:首页 > 编程语言 > Java开发

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

2018-03-25 23:35 639 查看
实际原理是利用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
案列:a.相关导出的properties配置文件
jdbc.exportPath=e\:\\mysql\\edu.sql
//获取配置文件属性

        String exportPath = map.get("jdbc.exportPath");
        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();
        }
        

(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数据库的步骤了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: