sql >> データベース >  >> RDS >> Mysql

Javaからのmysqlデータベースの簡単なバックアップと復元

    注:以下のコードは、問題を解決する1つの方法であり、おそらく最善の方法ではありません。コード内ではすべてが変更可能です。環境変数にmysqlがない場合は、mysqldumpとmysqlの前にパスを追加します(例:XAMPPの場合、C:\ xampp \ mysql \ bin \ mysqldump)

    (これで問題が解決することを願っています。すべてを完全に理解し、適切に実装するために1日かかりました)

    バックアップの方法:

    public static void Backupdbtosql() {
        try {
    
            /*NOTE: Getting path to the Jar file being executed*/
            /*NOTE: YourImplementingClass-> replace with the class executing the code*/
            CodeSource codeSource = YourImplementingClass.class.getProtectionDomain().getCodeSource();
            File jarFile = new File(codeSource.getLocation().toURI().getPath());
            String jarDir = jarFile.getParentFile().getPath();
    
    
            /*NOTE: Creating Database Constraints*/
            String dbName = "YourDBName";
            String dbUser = "YourUserName";
            String dbPass = "YourUserPassword";
    
            /*NOTE: Creating Path Constraints for folder saving*/
            /*NOTE: Here the backup folder is created for saving inside it*/
            String folderPath = jarDir + "\\backup";
    
            /*NOTE: Creating Folder if it does not exist*/
            File f1 = new File(folderPath);
            f1.mkdir();
    
            /*NOTE: Creating Path Constraints for backup saving*/
            /*NOTE: Here the backup is saved in a folder called backup with the name backup.sql*/
             String savePath = "\"" + jarDir + "\\backup\\" + "backup.sql\"";
    
            /*NOTE: Used to create a cmd command*/
            String executeCmd = "mysqldump -u" + dbUser + " -p" + dbPass + " --database " + dbName + " -r " + savePath;
    
            /*NOTE: Executing the command here*/
            Process runtimeProcess = Runtime.getRuntime().exec(executeCmd);
            int processComplete = runtimeProcess.waitFor();
    
            /*NOTE: processComplete=0 if correctly executed, will contain other values if not*/
            if (processComplete == 0) {
                System.out.println("Backup Complete");
            } else {
                System.out.println("Backup Failure");
            }
    
        } catch (URISyntaxException | IOException | InterruptedException ex) {
            JOptionPane.showMessageDialog(null, "Error at Backuprestore" + ex.getMessage());
        }
    }
    

    復元方法:

    public static void Restoredbfromsql(String s) {
            try {
                /*NOTE: String s is the mysql file name including the .sql in its name*/
                /*NOTE: Getting path to the Jar file being executed*/
                /*NOTE: YourImplementingClass-> replace with the class executing the code*/
                CodeSource codeSource = YourImplementingClass.class.getProtectionDomain().getCodeSource();
                File jarFile = new File(codeSource.getLocation().toURI().getPath());
                String jarDir = jarFile.getParentFile().getPath();
    
                /*NOTE: Creating Database Constraints*/
                 String dbName = "YourDBName";
                 String dbUser = "YourUserName";
                 String dbPass = "YourUserPassword";
    
                /*NOTE: Creating Path Constraints for restoring*/
                String restorePath = jarDir + "\\backup" + "\\" + s;
    
                /*NOTE: Used to create a cmd command*/
                /*NOTE: Do not create a single large string, this will cause buffer locking, use string array*/
                String[] executeCmd = new String[]{"mysql", dbName, "-u" + dbUser, "-p" + dbPass, "-e", " source " + restorePath};
    
                /*NOTE: processComplete=0 if correctly executed, will contain other values if not*/
                Process runtimeProcess = Runtime.getRuntime().exec(executeCmd);
                int processComplete = runtimeProcess.waitFor();
    
                /*NOTE: processComplete=0 if correctly executed, will contain other values if not*/
                if (processComplete == 0) {
                    JOptionPane.showMessageDialog(null, "Successfully restored from SQL : " + s);
                } else {
                    JOptionPane.showMessageDialog(null, "Error at restoring");
                }
    
    
            } catch (URISyntaxException | IOException | InterruptedException | HeadlessException ex) {
                JOptionPane.showMessageDialog(null, "Error at Restoredbfromsql" + ex.getMessage());
            }
    
        }
    


    1. Postgres jsonbの配列の構造をクエリするための適切なインデックスは何ですか?

    2. VMwareWorkstationを使用した仮想マシンへのSQLServer2019用のUbuntu18.04のインストール

    3. テーブルはCREATETEMPORARYTABLEを使用してメモリまたはディスクに作成されていますか?

    4. テーブルから上位N行を選択します