1. 程式人生 > 資料庫 >史上最簡單的MySQL資料備份與還原教程(中)(三十六)

史上最簡單的MySQL資料備份與還原教程(中)(三十六)

資料備份與還原第二篇,具體如下

基礎概念:

備份,將當前已有的資料或記錄另存一份;

還原,將資料恢復到備份時的狀態。

為什麼要進行資料的備份與還原?

防止資料丟失;保護資料記錄。

資料備份與還原的方式有很多種,具體可以分為:資料表備份、單表資料備份、SQL備份和增量備份。

單表資料備份

單表資料備份,每次只能備份一張表,而且只能備份資料,不能備份表結構。

通常的使用場景為:將表中的資料匯出到檔案。

備份方法:從表中選出一部分資料儲存到外部的檔案中,

select */欄位列表 + into outfile + '檔案儲存路徑' + from 資料來源;

在這裡,使用單表資料備份有一個前提,那就是:匯出的外部檔案不存在,即檔案儲存路徑下的檔案不存在

執行如下 SQL 語句,進行測試:

-- 單表資料備份
select * into outfile 'D:/CoderLife/testMySQL/class.txt' from class;

1

如上圖所示,SQL 語句已經執行成功。在這裡,如果我們遇到:

ERROR 1290 (HY000): The MySQL server is running with the –secure-file-priv option so it cannot execute this statement.

這個錯誤,可以通過檢視「詳述 MySQL 匯出資料遇到 secure-file-priv 的問題」進行解決。

為了驗證是否真的將class表中的資料匯出到指定位置,我們可以到該路徑下進行確認:

2

如上圖所示,顯然我們已經將class表中的資料匯出到本地啦!不過在這裡,有一點需要我們特別注意,那就是:對於從資料庫匯出的檔案,我們最好用EditPlus等編輯工具開啟,防止亂碼

此外,對於上述用於匯出表中資料的 SQL 語法,其實我們可以顛倒書寫順序,也沒有問題,例如:

select */欄位列表 + from 資料來源 + into outfile + '檔案儲存路徑';

執行如下 SQL 語句,進行測試:

-- 單表資料備份
select * from class into outfile 'D:/CoderLife/testMySQL/class2.txt';

3

接下來,我們學習一些用於單表資料備份的高階操作,即自己指定欄位和行的處理方式

基本語法:select */欄位列表 + into outfile + '檔案儲存路徑' + fields + 欄位處理 + lines + 行處理 + from 資料來源;

欄位處理:

enclosed by:指定欄位用什麼內容包裹,預設是,空字串;

terminated by:指定欄位以什麼結束,預設是\t,Tab鍵;

escaped by:指定特殊符號用什麼方式處理,預設是\\,反斜線轉義。

行處理:

starting by:指定每行以什麼開始,預設是,空字串;

terminated by:指定每行以什麼結束,預設是\r\n,換行符。

執行如下 SQL 語句,進行測試:

-- 指定單表資料備份處理方式
select * into outfile 'D:/CoderLife/testMySQL/class3.txt'
-- 欄位處理
fields
enclosed by '"'
terminated by '|'
lines
starting by 'START:'
from class ;

4

如上圖所示,顯然匯出檔案class3.txt按照我們指定的格式進行輸出啦!在前面,我們已經測試了各種單表資料備份的方式,現在我們刪除資料,並嘗試還原資料,即將保持在外部的資料重新恢復到資料表中。But,由於單表資料備份進能備份資料,因此如果表結構不存在,則不能進行還原。

基本語法:load data infile + '檔案儲存路徑' + into table + 表名 + [欄位列表] + fields + 欄位處理 + lines + 行處理;

執行如下 SQL 語句,進行測試:

-- 刪除表 class 中的資料
delete from class;

-- 查看錶 class 中的資料
select * from class;

-- 還原表 class 中的資料
load data infile 'D:/CoderLife/testMySQL/class3.txt'
into table class
-- 欄位處理
fields
enclosed by '"'
terminated by '|'
lines
starting by 'START:';

-- 查看錶 class 中的資料
select * from class;

5

如上圖所示,顯然在我們刪除表class中的資料之後,還原資料成功。

溫馨提示:符號[]括起來的內容,表示可選項;符號+,則表示連線的意思。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。