標籤

2018年7月2日 星期一

省錢大作戰從MS-SQL跳槽到MySQL:第三步撰寫 C# 轉檔程式將資料從 MS-SQL Copy 到 MySQL資料庫

撰寫 C#   參數化轉檔程式將資料從 MS-SQL Copy 到 MySQL資料庫

◎  Windows   轉檔程式

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

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

◎  設計畫面

   
轉檔程式畫面設計

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

◎  確定專案為 .Net Framework 4.0:

    專案 --> MySQLFromMSWinAP 屬性 --> 目標 Framework --> 確定為 .Net Framework 4.0 ,如果不是,請改過來。
選擇 .Net Framework 4.0

使用 .NET Framework 4.0 是為了相容於 Windows XP,如果沒有此需求,也可以使用其他版本。

◎  專案加入參考:


   專案 --> 加入參考 --> 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

不過 MySQL Connector Net 6.8.3 最高只支援到 .NET Framework 4.5。

◎撰寫程式

  Form1 上 buttonSEARCH,buttonPOST,buttonEXIT三個按鍵都雙擊一次。 開始撰寫參數化的轉檔程式。


◎程式解析 :

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

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

    ○buttonSEARCH_Click:
       建立 dtTable --> 先連結 MySQL 資料庫 --> 用  Show Tables 讀出 PAM 資料庫所有 Tables  (Show Tables 為 MySQL 特有的指令,MS-SQL 沒有,必須用其他方法抓取) --> 用 SELECT COUNT(*) 指令讀取每個 Table 的筆數放進 dtTable 之 MySQL 欄位。
       再連結 MsSQL 資料庫 --> 仍然用 SELECT COUNT(*) 指令讀取每個 Table 的筆數放進 dtTable 之 MsSQL 欄位,若 MsSQL 之筆數不等於 MySQL 之筆數,Sel 欄位自動標示為 V。
       最後將 dataGridView1 之 DataSource 綁訂為 dtTable,為 dataGridView1 做細部設定 --> 然後顯示抓到之總筆數。

 ○buttonPOST_Click:
       用 MessageBox 確認轉檔動作 --> 逐步掃描 dataGridView1 抓取 TableName 與 Sel 欄位都有值者才轉檔。
       Post1 -->  先抓取 MsSQL 資料表 --> 用  Show Columns from TableName 讀出 MySQL 資料庫中該 TableName 所有的 Column -->  再抓取 MySQL 資料表 --> 剔除 MySQL 現有的資料,只將 MsSQL 多的資料存入 MySQL 資料表中。最後返回轉檔的筆數。
       顯示總轉檔筆數與耗用時間。

 ○buttonEXIT_Click:
       結束轉檔程式

◎執行轉檔程式 :

偵錯 --> 開始偵錯 -->  按 Search
MS-SQL --> MySQL 轉檔前筆數對照
接著 按 Post --> 開始轉檔 ? --> 是(Y)
MS-SQL --> MySQL 轉檔完成,三萬筆資料耗時22秒。


◎測試轉檔結果 :

  直接執行 C:\PAM\DotNet\MyPAMWinAP\MyPAMWinAP\bin\x64\Debug\MyPAMWinAP.exe  --> 使用者名稱:MGR,密碼:MGR --> 簽入。

MyPAMWinAP 順利簽入後之主選單畫面


◎MS-SQL --> MySQL 資料轉檔完成,系統正常運轉。


沒有留言:

張貼留言