<%@LANGUAGE="VBSCRIPT" CODEPAGE="950"%> Untitled Document
課程105:MySQL:資料的匯入、資料庫的備份、以及資料庫的還原。
摘要:
在介紹MySQL查詢的基本語法之前,我們需要一些資料。所以,我們先討論如何將資料匯入到資料庫。接著我們學習如何使用 mysqldump 把資料庫中的資料匯出成 Script 檔。最後,我們學習把 dump 出來的 Script 檔還原回資料庫。

資料的匯入

說明:

我們之前在 Dreamweaver MX的課程中,用 Access 作了一個資料庫 mxdb(按這裡下載)。以下的實作,將轉換資料庫中的 Guestbook 資料表,到 MySQL 資料庫。


一、自 Access 檔案中,將 Guestbook 轉換成文字檔

說明:

我們會在 MySQL 中建立一個 Guestbook 資料表,然後匯入 Access 資料庫中Guestbook資料表的資料。

 

實作:
  1. 執行 Access,並開啟 mxdb.mdb檔。
  2. 選取 Guestbook 這個資料表,按滑鼠右鍵,在跳出式選單中,選取匯出,檔案類型:選擇文字檔案。然後,按儲存按鈕。
  3. 在輸出文字精靈中,按進階按鈕,把日期分隔符號改為 -,然後按確定按鈕,回到輸出文字精靈。
  4. 按下一步按鈕,檢查選擇欄位分隔字元為逗號,字串辨識符號為雙引號。按完成按鈕,完成輸出。

二、轉換文字檔案的類型

說明:

因為 Windows 的文字檔案,使用與 Unix/Linux 文字檔案不同的換行字元。所以,在 Linux的MySQL 匯入文字檔案的資料時,會發生問題。解決的方式是使用 EditPlus 中的檔案轉換功能,將文字檔轉換成 Unix的格式。

實作:
  1. 啟動 EditPlus。開啟之前自 Access 匯出的文字檔:GuestbookOut.txt。
  2. 執行選單中的 Document | File Format (CR/LF) | Unix。
  3. 存檔。
三、撰寫 MySQL 的 Script 檔

說明:

原則上,我們可以使用 mysql 的工具,進入到 mysql 提示下,以互動的方式,先建立資料庫,再建立資料表,然後再匯入文字檔中的資料。但是,這樣做有個缺點,就是在輸入命令時難免會打錯字。每次重打會很不方便。所以,我們使用另一種技巧,就是使用 Linux Shell 的重導輸入的方式,將 mysql 指令導入到 mysql 環境,作批次的執行。這種技巧在資料庫的備份與還原時,以及將資料庫移轉到其他機器上時,也很常用。不過,在撰寫 MySQL 的 Script 檔之前,我們先設定 EditPlus 的 MySQL 的語法檔。

實作:設定 EditPlus 的 MySQL 的語法檔
  1. 下載 EditPlus 的 MySQL 的語法檔 sql.txt (按這裡下載)。
  2. 將 sql.txt 放置在 EditPlus 的安裝資料夾中。如:C:\Program Files\EditPlus。
  3. 啟動 EditPlus。
  4. 執行選單中的 Tools | Preferences。按 Add 按鈕新增檔案類型。
  5. 參考下圖,設定各欄位,完成設定後,按 OK 按鈕。


實作:撰寫 MySQL 的Script檔
  1. 啟動 EditPlus。
  2. 執行選單中的 File | New | Others。
  3. Select File Type選擇 MySQL,然後按 OK按鈕。
  4. 輸入以下的 MySQL 命令碼:
    # 產生資料庫
    Create Database lib13;
    # 選用資料庫
    use lib13;
    # 產生 Guestbook 資料表
    Create Table Guestbook(
      id int primary key auto_increment,
      name varchar(32) not null,
      email varchar(64),
      web varchar(128),
      content text,
      post_time datetime not null,
      fk_icon int not null
    );
    # 將 GuestbookOut.txt 中的內容載入到 Guestbook 資料表
    LOAD DATA LOCAL INFILE "Guestbook.txt"
      INTO TABLE Guestbook
      FIELDS
      TERMINATED BY ','
      ENCLOSED BY '"'
      (name, email, web, content, post_time, fk_icon);
  5. 存檔。檔名:db.sql。

程式說明:

# 是 MySQL 的註解符號。

Load Data 的用法:
格式:
LOAD DATA LOCAL INFILE 資料文字檔
INTO TABLE 資料表名稱
FIELDS
TERMINATED BY <char A>
ENCLOSED BY <char A>
(欄1, 欄2, 欄3, ...欄n);

TERMINATED BY <char A> 表示以字元A, 作為輸入資料的欄位分隔字元, 字元前後以單引號框住.

ENCLOSED BY <char A> 表示以字元A, 作為輸入資料的文字欄位字串辨識符號, 字元前後以單引號框住.
*/

 

四、匯入資料

說明:

MySQL的Script檔完成後,我們就可以將Script檔和資料的文字檔,上傳到資料庫主機中。接著使用 Linux Shell 的重導輸入的方式,將資料匯入到 MySQL資料庫中。

 

實作:匯入資料
  1. 使用EditPlus的檔案上傳功能,將 db.sql 及 Guestbook.txt上傳到資料庫主機。
  2. 使用Putty連線到主機。
  3. 使用 cd 指令,切換到之前上傳的目錄中。
  4. 在 Linux Shell 執行以下的指令,將資料匯入到 MySQL 資料庫:
    mysql -p<db.sql
  5. 輸入你的MySQL密碼後,完成匯入。
實作:檢查資料是否已匯入成功
  1. 在 Linux Shell 執行以下的指令:
    mysql -p
  2. 輸入你的密碼後,進入 mysql 提示。
  3. 在mysql 提示下,輸入以下的命令,秀出所有資料庫。
    show databases;
  4. 在mysql 提示下,輸入以下的命令,選用匯入的資料庫。
    use lib13;
  5. 在mysql 提示下,輸入以下的命令,秀出資料庫中所有的資料表。
    show tables;
  6. 在mysql 提示下,輸入以下的命令,秀出 Guestbook 資料表各欄位的定義。
    describe Guestbook;

資料庫的備份、還原、與移轉

說明:

資料庫的備份、還原、與移轉,除了是資料庫管理者的日常重要工作之外,對程式開發者而言,也是一個非常重要的技能。在實務上,多數的小型專案,客戶通常並沒有設置資料庫管理師,來幫你處理這些事情;就算有,你要取得資料庫管理師的幫助時,你也必須要會一些基本的資料庫操作技能,才能讓你和對方在工作上的溝通與合作愉快。資料庫的備份,在這只教導 MySQL的 mysqldump指令的使用。使用 mysqldump 配合 Linux Shell的重導輸出,就可以把資料庫的資料匯出成 MySQL Script檔案。之後,你就可以使用這個檔案,用之前 mysql 配合Linux Shell 的重導輸入的方式,將資料庫還原;或者,將這個檔案,複製到其他的機器,匯入到其他機器的 MySQL資料庫中。


實作:資料庫的備份
  1. 使用Putty連線到主機。
  2. 執行以下的指令,將資料匯出到 Script檔:
    mysqldump -p lib13 > db_backup.sql
  3. 輸入你的密碼後,完成匯出。
實作:刪除 Guestbook 資料表
  1. 使用Putty連線到主機。
  2. 在 Linux Shell 執行以下的指令:
    mysql -p
  3. 輸入你的密碼後,進入 mysql 提示。
  4. 在mysql 提示下,輸入以下的命令,選用匯入的資料庫。
    use lib13;
  5. 在mysql 提示下,輸入以下的命令,刪除 Guestbook 資料表。
    drop table Guestbook;
  6. 在mysql 提示下,輸入以下的命令,秀出資料庫中所有的資料表。
    show tables;
實作:資料庫的還原
  1. 使用Putty連線到主機。
  2. 在 Linux Shell 執行以下的指令:
    mysql -p lib13 < db_backup.sql
  3. 輸入你的密碼後,完成還原。