java - 我想恢复数据库

标签 java mysql swing

我要备份数据库,但无法恢复相同的备份文件。这是备份代码。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

import javax.swing.JDialog;
import javax.swing.JFileChooser;

class Backupsql extends JDialog {

    public boolean backupDB(String dbUser, String dbPass, String dbName) {
        String sourcePath = null;
        boolean result = false;
        JFileChooser fc = new JFileChooser();
        int i = fc.showSaveDialog(Backupsql.this);
        File file = fc.getSelectedFile();
        sourcePath = file.getPath();
        String filename = file.getName();
        sourcePath = sourcePath + ".sql";

        String executeCmd =
            "C:\\Program Files\\MySQL\\MySQL Server 5.0\\bin\\mysqldump -u "
            + dbUser + " -p" + dbPass + " " + dbName + " -r " + sourcePath;

        Process runtimeProcess;
        try {
            runtimeProcess = Runtime.getRuntime().exec(executeCmd);
            int processComplete = runtimeProcess.waitFor();
            if (processComplete == 0) {
                System.out.println("Backup created successfully");
                compressFile(sourcePath);
                result = true;
            } else {
                System.out.println("Could not create the backup");
            }
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("error" + e);
        }
        return result;
    }

    public static void compressFile(String srcFile) {
        byte[] buffer = new byte[1024];
        try {
            String destPath = srcFile.replace(".sql", ".zip");
            FileOutputStream fos = new FileOutputStream(destPath);
            ZipOutputStream zos = new ZipOutputStream(fos);
            ZipEntry ze = new ZipEntry(srcFile);
            zos.putNextEntry(ze);
            FileInputStream in = new FileInputStream(srcFile);

            int len;
            while ((len = in.read(buffer)) > 0) {
                zos.write(buffer, 0, len);
            }
            in.close();
            zos.closeEntry();
            zos.close();
            System.out.println("Done");
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

这是我正在使用的恢复命令。

String[] executeCmd = new String[]{
    "C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin\\mysql.exe", "--user="
    + user, "--password=" + password, "-e", " source " + Unzippath};

我的代码正确吗?我能得到一些建议吗?

最佳答案

查看 MySQL Backup/Restore 。下面的SQL可以简单地用JDBC执行,并且更通用。它也用于处理完整备份。

LOAD DATA INFILE '...'

关于java - 我想恢复数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14498270/

相关文章:

mysql - Heroku 托管带有 MySQL 抛出错误的 Flask 应用程序

java - Selenium 错误 MainClientExec :103 - Connection discarded

java - 使用 Matlab 进行 HTTP 发布

php - MySQL 就像在一行上一样,就像在多行 INNER JOINED 表上一样

PHP mysql 创建一个文本文件供下载和数据显示

java - java中swing之间如何共享数据?

java - XStream:通用 LinkedHashMap 的问题

java - Spring 3.1 如何将所有异常发送到一页?

Java setOpaque 方法无法在其他面板之上添加面板

java - 为什么重复调用 repaint() 方法不起作用