史上最簡單的MySQL資料備份與還原教程(中)(三十六)
資料備份與還原第二篇,具體如下
基礎概念:
備份,將當前已有的資料或記錄另存一份;
還原,將資料恢復到備份時的狀態。
為什麼要進行資料的備份與還原?
防止資料丟失;保護資料記錄。
資料備份與還原的方式有很多種,具體可以分為:資料表備份、單表資料備份、SQL備份和增量備份。
單表資料備份
單表資料備份,每次只能備份一張表,而且只能備份資料,不能備份表結構。
通常的使用場景為:將表中的資料匯出到檔案。
備份方法:從表中選出一部分資料儲存到外部的檔案中,
select */欄位列表 + into outfile + '檔案儲存路徑' + from 資料來源;
在這裡,使用單表資料備份有一個前提,那就是:匯出的外部檔案不存在,即檔案儲存路徑下的檔案不存在
執行如下 SQL 語句,進行測試:
-- 單表資料備份 select * into outfile 'D:/CoderLife/testMySQL/class.txt' from class;
如上圖所示,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表中的資料匯出到指定位置,我們可以到該路徑下進行確認:
如上圖所示,顯然我們已經將class表中的資料匯出到本地啦!不過在這裡,有一點需要我們特別注意,那就是:對於從資料庫匯出的檔案,我們最好用EditPlus等編輯工具開啟,防止亂碼。
此外,對於上述用於匯出表中資料的 SQL 語法,其實我們可以顛倒書寫順序,也沒有問題,例如:
select */欄位列表 + from 資料來源 + into outfile + '檔案儲存路徑';
執行如下 SQL 語句,進行測試:
-- 單表資料備份 select * from class into outfile 'D:/CoderLife/testMySQL/class2.txt';
接下來,我們學習一些用於單表資料備份的高階操作,即自己指定欄位和行的處理方式。
基本語法: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 ;
如上圖所示,顯然匯出檔案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;
如上圖所示,顯然在我們刪除表class中的資料之後,還原資料成功。
溫馨提示:符號[]括起來的內容,表示可選項;符號+,則表示連線的意思。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。