使用mysql時,資料庫的資料備份是乙個值得我們關注的話題。按照不同的維度,資料庫的資料備份可以分為物理備份與邏輯備份,也可以分為全量備份與增量備份,等等。而關於這些備份型別的區別以及適用場景,可以參考 mysql 5.7 官方手冊的詳細介紹 backup and recovery types。
本文講述的資料庫的資料備份方式,屬於邏輯備份,也屬於增量備份,其適用於場景為:需要將乙個表中特定的行記錄資料按照一定格式備份到文字檔案中,即 select … into outfile 的使用。
select … into outfile 『file_name』 指定的檔案將在 mysql 伺服器主機上建立,因此使用時得先具備主機相關目錄的許可權。另外指定的檔案不能已經存在,該語法不能覆蓋同名檔案,主要是為了防止主機上的重要檔案(如/etc/passwd和資料庫表)被銷毀。
fields 子句以及 lines 子句如果不顯示指定相關值,則採用如下預設設定
fields
terminated
by'\t'
-- 字段分隔符,生成的文字檔案中每個字段(列)以什麼字元分隔,預設是 \t
enclosed
by''
-- 文字限定符,生成的文字檔案中每個欄位被什麼字元包圍,預設是空字元
escaped
by'\\'
-- 轉義符,預設是 \
lines
terminated
by'\n'
-- 記錄分隔符,資料庫表資料每條記錄在生成的文字檔案中如何分隔,一般都習慣用行分隔符,即一條表資料記錄對應檔案檔案的一行
starting
by''
-- 起始字串,資料庫表資料每條記錄儲存到文字檔案時,每條記錄開頭填充的字串,一般無特別要求,設定為空字元
如果需要在文字檔案中儲存 blob 型別的值,建議使用 select … into dumpfile語法處理。
問題:error 1290 (hy000): the mysql server is running with the --secure-file-priv option so it cannot execute this statement
解決:①檢查 select … into outfile 『file_name』 指定的檔案的父目錄,確保目錄對應mysql 伺服器主機的,如不能將目錄指定為客戶端的;②該問題的出現主要與安裝mysql時限制了資料匯入與匯出的 file 許可權有關。執行命令show variables like 'secure_file_priv';
檢視 secure_file_priv 的值,該引數用以限制資料匯入和匯出的操作,例如執行load data、select … into outfile語句和load_file()函式等。
secure_file_priv=null – 引數為null,mysql禁止匯入和匯出操作③所以,處理該問題時可以根據實際情況採取相應方案,如secure_file_priv值指定了乙個目錄名,那麼select … into outfile 『file_name』 指定的檔案的父目錄可以相應修改為該目錄;如希望secure_file_priv引數失效或者指定另外乙個目錄,則可以先找到mysql的配置檔案,在配置檔案中加入或更新引數secure_file_priv的設定,重啟mysql伺服器即可。secure_file_priv=/tmp/ – 引數設為乙個目錄名,mysql限制匯入和匯出操作只能發生在/tmp/目錄下
secure_file_priv=』 』 – 引數為空,mysql不限制匯入和匯出操作,即引數無效
如何將資料從文字匯入到mysql
access中可以將文字中的資料輕鬆匯入表中,mysql中用起來沒那麼方便,其實起來也很簡單。首先將資料記錄按行處理好用特定的字元分開如 記錄形如 aaa,bbb,ccc,ddd,eee fff,ggg,hhh,iii,jjj,kkk 就行,建立loaddate.php hostname local...
如何將資料從文字匯入到mysql
access中可以將文字中的資料輕鬆匯入表中,mysql中用起來沒那麼方便,其實起來也很簡單。首先將資料記錄按行處理好用特定的字元分開如 記錄形如 aaa,bbb,ccc,ddd,eee fff,ggg,hhh,iii,jjj,kkk 就行,建立loaddate.php hostname lotqo...
如何將SQL資料庫備份到網路共享
當前位置 如何將sql資料庫備份到網路共享 定期備份sql資料庫是必須的。我們已經覆蓋的方式就可以輕鬆備份您的所有sql server資料庫到本地硬碟中,但這並不能防止驅動器和 或系統故障。作為針對此類災難的額外保護層,您可以在網路共享上覆制或直接建立備份。完成此任務的首選和最直接的方法是簡單地建立...