數據備份與還原第二篇,具體如下
基礎概念:
備份,將當前已有的數據或記錄另存一份;
還原,將數據恢復到備份時的狀態。
為什么要進行數據的備份與還原?
防止數據丟失;保護數據記錄。
數據備份與還原的方式有很多種,具體可以分為:數據表備份、單表數據備份、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中的數據之后,還原數據成功。
溫馨提示:符號[]括起來的內容,表示可選項;符號+,則表示連接的意思。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:- 史上最簡單的MySQL數據備份與還原教程(上)(三十五)
- 史上最簡單的MySQL數據備份與還原教程(下)(三十七)
- 詳解MySQL數據備份之mysqldump使用方法
- Linux下實現MySQL數據備份和恢復的命令使用全攻略
- 通過實例學習MySQL分區表原理及常用操作