MySQL 匯出資料為csv格式的方法

duanhao發表於2021-09-09

方案有很多種,我這裡簡單說一下:

1.  into outfile


複製程式碼 程式碼如下:
SELECT * FROM mytable 
 INTO OUTFILE '/tmp/mytable.csv' 
 FIELDS TERMINATED BY ',' 
 OPTIONALLY ENCLOSED BY '"' 
 LINES TERMINATED BY 'n';
 


在我使用過程中發現一個特別嚴重問題,這裡面不能插入查詢條件,比如where這些,也就是說只能整表匯出,不知道是不是我的寫法有問題,有知道朋友請給我留言。

第二個問題是,outfile的路徑一定要有寫許可權,我們mysql的程式許可權一般是mysql使用者,因此最好匯出到/tmp目錄下面。

2. 透過結合sed


複製程式碼 程式碼如下:
mysql -uroot test -e "select ip from server where a.name like '%abc%'"  -N -s | sed -e 's/^/"/g;s/$/"n/g'; > /tmp/test.csv


這裡首先使用mysql命令的-e引數來執行sql語句,然後透過-N來去掉輸出結果中列名,-s去掉輸出結果中的各種劃線。

然後使用sed命令輸出結果中所有相關資料進行替換,其中替換了三處,1.在行首增加“,在行尾增加”和換行,在每個欄位之間增加”,”來分隔。

3. 透過mysqldump來實現


複製程式碼 程式碼如下:
mysqldump -u username -p -t  -T/path/to/directory dbname table_name --fields-terminated-by=','


和1的方案差不多吧。

就當是一個筆記吧

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1343/viewspace-2804640/,如需轉載,請註明出處,否則將追究法律責任。

相關文章