標籤:mysql csv
MySQL在本身有提供高效的匯入匯出檔案的服務,當然在這裡指的並不是把結果轉儲成SQL指令碼,在平時把查詢的結果過匯出成CSV檔案的就是一種,在這裡 簡單的說一說如何在MySQL中正確的使查詢結果匯入匯出成檔案及用檔案快速匯入,首先MySQL查詢結果的匯出可以藉助於各種用戶端工具來快速時間,如Navicat等等,或者是自身的mysql二進位檔案來把結果匯出而其中在MySQL下最為高效的就是自身的SELECT ··· INTO OUTFILE的方式匯出,在使用時很簡單,如下把查詢的結果導成CSV檔案
SELECT * FROM book_tbl INTO OUTFILE ‘/tmp/book_tbl.csv‘ FIELDS TERMINATED BY ‘,‘ OPTIONALLY ENCLOSED BY ‘"‘ LINES TERMINATED BY ‘\n‘;
如此指定分隔字元及路徑就可以把查詢結果匯出成各種檔案,不過需要注意的是在使用這一種方法需要在MySQL中開啟對檔案寫入的相關目錄許可權,一般MySQL常規部署後都是用mysql使用者來啟動MySQL那麼在匯出時需要該目錄是在mysql使用者下可以寫入的許可權一般可以匯出在Unix系統下可以匯出到/tmp目錄,其中可以通過設定my.cnf中的secure_file_priv來設定允許匯出到伺服器本地下,要注意的是這個變數不支援動態修改,所以在添加修改後需要重啟MySQL,如果在設定時沒有指定路徑則是允許到任意路徑,如果 指定的值是null則是不允許匯出,預設就是這個值,平時在使用的時候建議指定匯出目錄,如指定在/tmp目錄下
secure_file_priv = /tmp
。當然使用這種辦法匯出的檔案也是在伺服器上,如果是需要匯出到用戶端本地則要使用相應的用戶端工具,而在匯入時則可以使用LOAD DATA INFILE來從檔案中匯入MySQL中,如下把伺服器下的CSV匯入事先建好的表中
LOAD DATA INFILE ‘/tmp/book_tbl.csv‘ INTO TABLE book_tbl_file FIELDS TERMINATED BY ‘,‘ OPTIONALLY ENCLOSED BY ‘"‘ LINES TERMINATED BY ‘\n‘;
同SELECT …… INTO OUTFILE的方式一樣可以根據不同的檔案定義不同的檔案分隔字元來用檔案匯入資料庫且該檔案MySQL有許可權讀取。
本文出自 “Jim的技術隨筆” 部落格,謝絕轉載!
MySQL的高效匯入匯出