| 課程105:MySQL:資料的匯入、資料庫的備份、以及資料庫的還原。 |
摘要:
在介紹MySQL查詢的基本語法之前,我們需要一些資料。所以,我們先討論如何將資料匯入到資料庫。接著我們學習如何使用 mysqldump
把資料庫中的資料匯出成 Script 檔。最後,我們學習把 dump 出來的 Script 檔還原回資料庫。 |
資料的匯入
|
說明:
我們之前在 Dreamweaver MX的課程中,用 Access 作了一個資料庫 mxdb(按這裡下載)。以下的實作,將轉換資料庫中的
Guestbook 資料表,到 MySQL 資料庫。
|
| 一、自 Access 檔案中,將 Guestbook 轉換成文字檔 |
說明:
我們會在 MySQL 中建立一個 Guestbook 資料表,然後匯入 Access 資料庫中Guestbook資料表的資料。
|
| 實作: |
- 執行 Access,並開啟 mxdb.mdb檔。
- 選取 Guestbook 這個資料表,按滑鼠右鍵,在跳出式選單中,選取匯出,檔案類型:選擇文字檔案。然後,按儲存按鈕。
- 在輸出文字精靈中,按進階按鈕,把日期分隔符號改為 -,然後按確定按鈕,回到輸出文字精靈。
- 按下一步按鈕,檢查選擇欄位分隔字元為逗號,字串辨識符號為雙引號。按完成按鈕,完成輸出。
|
| 二、轉換文字檔案的類型 |
說明:
因為 Windows 的文字檔案,使用與 Unix/Linux 文字檔案不同的換行字元。所以,在 Linux的MySQL
匯入文字檔案的資料時,會發生問題。解決的方式是使用 EditPlus 中的檔案轉換功能,將文字檔轉換成 Unix的格式。
|
| 實作: |
- 啟動 EditPlus。開啟之前自 Access 匯出的文字檔:GuestbookOut.txt。
- 執行選單中的 Document | File Format (CR/LF) | Unix。
- 存檔。
|
| 三、撰寫 MySQL 的 Script 檔 |
說明:
原則上,我們可以使用 mysql 的工具,進入到 mysql 提示下,以互動的方式,先建立資料庫,再建立資料表,然後再匯入文字檔中的資料。但是,這樣做有個缺點,就是在輸入命令時難免會打錯字。每次重打會很不方便。所以,我們使用另一種技巧,就是使用
Linux Shell 的重導輸入的方式,將 mysql 指令導入到 mysql 環境,作批次的執行。這種技巧在資料庫的備份與還原時,以及將資料庫移轉到其他機器上時,也很常用。不過,在撰寫
MySQL 的 Script 檔之前,我們先設定 EditPlus 的 MySQL 的語法檔。
|
| 實作:設定 EditPlus 的 MySQL 的語法檔 |
- 下載 EditPlus 的 MySQL 的語法檔 sql.txt (按這裡下載)。
- 將 sql.txt 放置在 EditPlus 的安裝資料夾中。如:C:\Program Files\EditPlus。
- 啟動 EditPlus。
- 執行選單中的 Tools | Preferences。按 Add 按鈕新增檔案類型。
- 參考下圖,設定各欄位,完成設定後,按 OK 按鈕。
|
| 實作:撰寫 MySQL 的Script檔 |
- 啟動 EditPlus。
- 執行選單中的 File | New | Others。
- Select File Type選擇 MySQL,然後按 OK按鈕。
- 輸入以下的 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);
|
- 存檔。檔名: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資料庫中。
|
| 實作:匯入資料 |
- 使用EditPlus的檔案上傳功能,將 db.sql 及 Guestbook.txt上傳到資料庫主機。
- 使用Putty連線到主機。
- 使用 cd 指令,切換到之前上傳的目錄中。
- 在 Linux Shell 執行以下的指令,將資料匯入到 MySQL 資料庫:
mysql -p<db.sql
- 輸入你的MySQL密碼後,完成匯入。
|
| 實作:檢查資料是否已匯入成功 |
- 在 Linux Shell 執行以下的指令:
mysql -p
- 輸入你的密碼後,進入 mysql 提示。
- 在mysql 提示下,輸入以下的命令,秀出所有資料庫。
show databases;
- 在mysql 提示下,輸入以下的命令,選用匯入的資料庫。
use lib13;
- 在mysql 提示下,輸入以下的命令,秀出資料庫中所有的資料表。
show tables;
- 在mysql 提示下,輸入以下的命令,秀出 Guestbook 資料表各欄位的定義。
describe Guestbook;
|
資料庫的備份、還原、與移轉 |
說明:
資料庫的備份、還原、與移轉,除了是資料庫管理者的日常重要工作之外,對程式開發者而言,也是一個非常重要的技能。在實務上,多數的小型專案,客戶通常並沒有設置資料庫管理師,來幫你處理這些事情;就算有,你要取得資料庫管理師的幫助時,你也必須要會一些基本的資料庫操作技能,才能讓你和對方在工作上的溝通與合作愉快。資料庫的備份,在這只教導
MySQL的 mysqldump指令的使用。使用 mysqldump 配合 Linux Shell的重導輸出,就可以把資料庫的資料匯出成
MySQL Script檔案。之後,你就可以使用這個檔案,用之前 mysql 配合Linux Shell 的重導輸入的方式,將資料庫還原;或者,將這個檔案,複製到其他的機器,匯入到其他機器的
MySQL資料庫中。
|
| 實作:資料庫的備份 |
- 使用Putty連線到主機。
- 執行以下的指令,將資料匯出到 Script檔:
mysqldump -p lib13 > db_backup.sql
- 輸入你的密碼後,完成匯出。
|
| 實作:刪除 Guestbook 資料表 |
- 使用Putty連線到主機。
- 在 Linux Shell 執行以下的指令:
mysql -p
- 輸入你的密碼後,進入 mysql 提示。
- 在mysql 提示下,輸入以下的命令,選用匯入的資料庫。
use lib13;
- 在mysql 提示下,輸入以下的命令,刪除 Guestbook 資料表。
drop table Guestbook;
- 在mysql 提示下,輸入以下的命令,秀出資料庫中所有的資料表。
show tables;
|
| 實作:資料庫的還原 |
- 使用Putty連線到主機。
- 在 Linux Shell 執行以下的指令:
mysql -p lib13 < db_backup.sql
- 輸入你的密碼後,完成還原。
|