+1 امتیاز
قبل در برنامه نویسی توسط (50 امتیاز)
برچسب گذاری دوباره قبل توسط

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

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

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

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

1 پاسخ

0 امتیاز
قبل توسط (1.1هزار امتیاز)

با استفاده از دستور 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();
        }
قبل توسط (50 امتیاز)
مشکل فایل خروجی backup.sql است. encodingش، utf8 نیست، و موقع خوندن بصورت utf8، مشکل پیش میاد و خواندن با Exception همراه است. بعبارت دیگر encoding آن ISO_8859_1 است. چراکه در هنگام خوندن با این encoding مشکل پیش نمیاد. فایل خونده میشه ولی کاراکترهای یونی کد درست خونده نمیشه... یعنی وقته میرسه به دستورات insert که داده های فارسی داده، error داده میشه. اگه بتوان به طریقی encoding فایل sql تولیدی با دستور mysqldump را utf8 کرد، مشکل برطرف میگردد.
قبل توسط (1.1هزار امتیاز)
از پارامتر --default-character-set در زمان گرفتن dump با استفاده از mysqldump استفاده کن.

سوالات مشابه

+1 امتیاز
1 پاسخ 3.1هزار بازدید
0 امتیاز
1 پاسخ 866 بازدید
0 امتیاز
0 پاسخ 366 بازدید
0 امتیاز
1 پاسخ 1.6هزار بازدید
+1 امتیاز
1 پاسخ 262 بازدید
0 امتیاز
0 پاسخ 1.1هزار بازدید
+1 امتیاز
1 پاسخ 417 بازدید
0 امتیاز
1 پاسخ 492 بازدید
0 امتیاز
1 پاسخ 367 بازدید
...