標籤

2018年7月6日 星期五

省錢大作戰從MS-SQL跳槽到MySQL:第五步透過 MsSQL 備份 MySQL 資料庫

 MySQLDUMP 是官方推薦的資料庫備份工具,只是遇到中文就有一堆問題,乾脆自己寫一個備份程式

◎  安裝   MS-SQL   Express

下載並執行 SQLEXPRADV_x64_CHT.exe 安裝 MS-SQL Express,目前使用的是 2014 版。

◎  建立資料庫

執行 SQL Server 2014 Management Studio --> 連上資料庫 --> Create DataBase KT; --> Use KT; --> 在 Query 視窗輸入: 

--> 然後按執行建立資料表  (這個 SQL Script  與 MySQL 所用的相同)。

◎  Windows   轉檔程式

    以系統管理員身份啟動 Visual Stdio --> 檔案 --> 新增 --> 專案 -->
C#新增專案

選擇 Windows Form 應用程式 --> 名稱:MySQL2MSWinAP --> 確定。

◎  設計畫面


轉檔程式畫面設計

Form1 放入 buttonMy2MS,buttonBACKUP,buttonEXIT三個按鍵。再放入 textBoxMsSql,textBoxMysql,textBoxBackDir 三個 TextBox,並且將 Enabled 設為 False。在三個 TextBox 之前放入 Label,並標上適當文字。最後加上 dataGridView。習慣上我還會將 Form1 之 WindowState 放到最大:Maximized。

◎  專案加入參考:


   專案 --> 加入參考 --> C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.3\Assemblies\v4.0\MySql.Data.dll 其中 v4.0 符合 .Net Framework 4.0 。與專案的 .NET Framework 相符--> 加入 --> 確定。
MySQL Connector Net 6.8.3 v4.0


◎撰寫程式


  Form1 上 buttonMy2MS,buttonBACKUP,buttonEXIT三個按鍵都雙擊一次。 開始撰寫轉檔程式。
 


--> 然後按 執行

◎程式解析 :

    ○專案參考命名空間:
       using System.Data.SqlClient;
       using MySql.Data.MySqlClient;
       using System.Diagnostics;

     ○資料庫備份目錄:
       textBoxBackDir.Text = @"C:\KT\BACKSQL";

     ○連線字串:
       public string ConnectionStringMSSQL = @"server=localhost\SQLEXPRESS;database=KT;uid=PAM;pwd=12345678";
       public string ConnectionStringMySQL = @"server=192.168.0.250;database=PAM;uid=root;pwd=12345678;charset=utf8;PORT=3306;";

    ○buttonMy2MS_Click:
       建立 dt  --> 連結 MySQL 資料庫 --> 用  Show Tables 讀出 KT 資料庫所有 Tables --> 用 SELECT * from Table 逐一讀取 MySQL 資料表 --> 先用 Truncate Table 清除 MS-SQL 資料表之資料 --> 再用 SqlBulkCopy 將資料存入 MS-SQL --> 返回存入資料筆數。
       最後將 dataGridView1 之 DataSource 綁訂為 dt,為 dataGridView1 做細部設定 --> 然後顯示抓到之總筆數。

 ○buttonBACKUP_Click:
       先 Check MySql 筆數必須大於0,且 MySql 筆數等於MsSql 筆數 --> 再 Check 資料庫備份目錄必須存在 --> 在程式中執行 BACKKT.bat --> 會產生 KT + 星期.bak 的備份檔 --> 所以會有 7 個備份檔。。
       顯示備份完成,並提示將備份檔案 Copy 到隨身碟。

 ○buttonEXIT_Click:
       結束備份程式

◎執行備份程式 :

偵錯 --> 開始偵錯 -->  按 My --> MS
從 MySQL 將 299 萬筆資料 Copy 到 MsSQL 只需 1 分 18 秒

接著 按 Backup
將 MsSql 資料庫備份到 KT+星期.bak 會產生 7 個備份檔


◎查看備份結果 :
程式產生的備分檔 C:\KT\BACKSQL\KT6.bak

備份程式會產生 7 個備份檔,週日為 1 ,週六為 7 。可以避免最近的備份檔有問題而無法復原的窘境。

◎自動化備份:

將 Windows 程式改成主控台程式,就可以上 Windows 排程每天自動備份。但是還是要靠人工將備份檔 Copy 到隨身碟。

沒有留言:

張貼留言