1. 程式人生 > >MySQL的高效導入導出

MySQL的高效導入導出

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的高效導入導出