SELECT ... FROM TABLE_A INTO OUTFILE "/path/to/file" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';
MySQL中,可使用SELECT...INTO OUTFILE語句將表的內容導出爲一個文本文件。其基本的語法格式以下:數據庫
SELECT [列名] FROM table [WHERE 語句] INTO OUTFILE '目標文件' [OPTION];
該語句分爲兩個部分。前半部分是一個普通的SELECT語句,經過這個SELECT語句來查詢所須要的數據;服務器
後半部分是導出數據的。其中,「目標文件」參數指出將查詢的記錄導出到哪一個文件中;編碼
「OPTION」參數爲可選參數選項,其可能的取值有:spa
FIELDS和LINES兩個子句都是自選的,可是若是兩個子句都被指定了,FIELDS必須位於LINES的前面。操作系統
該語法中的「目標文件」被建立到服務器主機上,所以必須擁有文件寫入權限(FILE權限)後,才能使用此語法。同時,「目標文件」不能是一個已經存在的文件。code
SELECT...INTO OUTFILE語句能夠很是快速地把一個錶轉儲到服務器上。若是想要在服務器主機以外的部分客戶主機上建立結果文件,則不能使用SELECT...INTO OUTFILE語句。blog
LOAD DATA INFILE "/path/to/file" INTO TABLE table_name; 注意:若是導出時用到了FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'語句,那麼LOAD時也要加上一樣的分隔限制語句。還要注意編碼問題。
舉個栗子:字符串
導出example數據庫下employee表的記錄。其中,字段之間用「、」隔開,字符型數據用雙引號括起來。每條記錄以「>」開頭。SQL代碼以下:table
SELECT * FROM example.employee INTO OUTFILE 'D:/tmp/emp.txt' FIELDS TERMINATED BY '\、' OPTIONALLY ENCLOSED BY '\"' LINES STARTING BY '\>' TERMINATED BY '\r\n';
FIELDS必須位於LINES的前面,多個FIELDS子句排列在一塊兒時,後面的FIELDS必須省略;一樣,多個LINES子句排列在一塊兒時,後面的LINES也必須省略。class
若是在employee表中包含了中文字符,須要註明編碼格式, CHARACTER SET gbk|utf8 語句,SQL代碼以下:
SELECT * FROM example.employee INTO OUTFILE 'F:/tmp/emp.txt' CHARACTER SET utf8 FIELDS TERMINATED BY '\、' OPTIONALLY ENCLOSED BY '\"' LINES STARTING BY '\>' TERMINATED BY '\r\n';
「TERMINATED BY '\r\n'」能夠保證每條記錄佔一行。由於Windows操做系統下「\r\n」纔是回車換行。若是不加這個選項,默認狀況只是「\n」