1. 程式人生 > >mysql匯出.csv檔案

mysql匯出.csv檔案

首先要進入mysql命令列,輸入 SHOW VARIABLES LIKE '%secure%';獲取secure_file_priv的值,該值是csv檔案的存放路徑。

具體操作過程如下圖所示

然後將資料庫中的表按如下指令匯出.csv檔案

select * from t_user
into outfile 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/user.csv'
fields terminated by ','
optionally enclosed by '"'
escaped by '"'
lines terminated by '\r\n';

這裡的user.csv檔案有20多萬條記錄,欄位有如下圖所示

匯出非常快!

secure_file_priv 的值可以在 my.ini檔案中找到和修改。

在MySQL5.6中my.ini位於安裝路徑下,而MySQL5.7中my.ini位於ProgramData資料夾下的MySQL中.

引數說明:

FIELDS TERMINATED BY ',':指定欄位分隔符為,(逗號),預設是空格
OPTIONALLY ENCLOSED BY '"':認為雙引號中的是一個獨立的欄位。Excel 轉 CSV 時,有特殊字元(逗號、頓號等)的欄位,會自動用雙引號引起來,注意這裡看到是兩個雙引號,實際上是一對 '(單引號)裡面一個"(雙引號),預設是不使用符號進行區別
LINES TERMINATED BY '\n':指定行分隔符為\n(換行),注意,在 Windows 平臺上建立的檔案,分隔符是 '\r\n'。預設是一條記錄+一個換行符,即每條記錄佔一行。這裡設定與否都一樣。

上面的語句歸納為:

select 欄位1[,欄位2...,欄位n] from table_name condition
into outfile 'secure_file_priv所指向的路徑+filename.csv'
fields terminated by ','--可以不設定
optionally enclosed by '"' --可以不設定
escaped by '"' --可以不設定
lines terminated by '\r\n'; --可以不設定

比如有t_book表如下所示

執行查詢語句

SELECT * FROM t_book
WHERE publishDate BETWEEN '2012-01-01' AND '2018-10-01'
AND price BETWEEN 1000 AND 10000
AND bookName LIKE CONCAT('%','名','%')
AND kind='言情'
LIMIT 0,198
into outfile 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/t_book.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'

結果如圖所示

以上內容涉及資料庫表t_book,可以下載我的t_book資源進行實驗

關於亂碼的解決

亂碼時可以通過 character set 編碼格式進行設定,比如

SELECT * from t_book
INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 5.6/Uploads/t_book.csv'
CHARACTER SET gbk
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';