طریقه Backup و Restore کردن بانک اطلاعاتی Mysql در swing

+1 رأی
میانگین بازدید روزانه 0.27646 بازدید

چه راهی برای پشتیبان گیری بانک اطلاعاتی در برنامه کاربردی وجود دارد بطوری فایل خروجی قابل بازیابی بدون استفاده از همین برنامه کاربردی نباشد؟

با استفاده از دستور Mysqldump   می توان با معرفی یک فایل dump mysql را در یک فایل با پسوند sql ذخیره کرد. ولی مشکلی که هست چون داده ها با فرمت utf8 می باشند، دستور

(BufferedReader reader = Files.newBufferedReader(path, Charset.utf_8 با مشکل مواجه می شود که با تغییر charset به ISO_8859_1 فایل به راحتی خوانده می شود ولی داده های utf بهم می ریزد.

آیا راهی برای اینکه بتوان تعیین کرد خروجی mysqldump فایل utf8  باشد وجود دارد؟ یا بطور کلی روش پشتیبان گیری در برنامه های کاربردی که با استفاده از swing نوشته می شوند چگونه می باشند؟

سوال 6 سال قبل در تالار برنامه نویسی توسط amin_y64 (50 امتیاز)
برچسب گذاری مجدد در 6 سال قبل توسط Saeed Zarinfam

1 جواب

0 رأی

با استفاده از دستور mysqldump پشتیبان گیری کنید و با استفاده از دستور mysql با پارامتر –default-character-set=utf8 نسخه backup گرفته شده را restore کنید.

شبه کد برای backup گرفتن:

    String executeCmd = “”;  
    executeCmd = “mysqldump -u “+dbUser+” -p”+dbPass+” “+dbName+” -r backup.sql”;  
    
      Process runtimeProcess =Runtime.getRuntime().exec(executeCmd);  
      int processComplete = runtimeProcess.waitFor();  
      if(processComplete == 0){  
	out.println(“Backup taken successfully”);  
      } else {  
	out.println(“Could not take mysql backup”);  
      }  

شبه کد برای restore کردن:

      String[] restoreCmd = new String[]{"mysql ", "--user=" + dbUserName, "--password=" +  
                   dbPassword + " --default-character-set=utf8 –comments" , "-e", "source " + source};
 
        Process runtimeProcess;
        try {
 
            runtimeProcess = Runtime.getRuntime().exec(restoreCmd);
            int processComplete = runtimeProcess.waitFor();
 
            if (processComplete == 0) {
                System.out.println("Restored successfully!");
            } else {
                System.out.println("Could not restore the backup!");
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
جواب 6 سال قبل توسط Saeed Zarinfam (478 امتیاز)
مشکل فایل خروجی backup.sql است. encodingش، utf8 نیست، و موقع خوندن بصورت utf8، مشکل پیش میاد و خواندن با Exception همراه است. بعبارت دیگر encoding آن ISO_8859_1 است. چراکه در هنگام خوندن با این encoding مشکل پیش نمیاد. فایل خونده میشه ولی کاراکترهای یونی کد درست خونده نمیشه... یعنی وقته میرسه به دستورات insert که داده های فارسی داده، error داده میشه. اگه بتوان به طریقی encoding فایل sql تولیدی با دستور mysqldump را utf8 کرد، مشکل برطرف میگردد.
از پارامتر --default-character-set در زمان گرفتن dump با استفاده از mysqldump استفاده کن.

سوال های مشابه

+1 رأی
1 جواب میانگین بازدید روزانه 0.35844 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.06152 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.07155 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.71980 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.05114 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.58613 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.0888 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.08143 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.0596 بازدید
0 رأی
2 جواب میانگین بازدید روزانه 0.491,001 بازدید
سوال 5 سال قبل در تالار برنامه نویسی توسط javaa (127 امتیاز)
کانال تلگرام جواب یاب
...