自動目錄
在mysql 的console中該如何將查詢結果輸出到檔案?
進入mysql console 後,希望將查詢的結果輸出到檔案,該怎麼做?
Query OK, 10 rows affected (0.02 sec)
使用 into outfile 就可以解決這個問題
不過,特別應該注意的是:
* 如果是遠端連線到資料庫,那麼儲存的檔案會是在資料庫那台機器上,而不是自己客戶端的機器。因此,你使用的帳號必須有"FILE"的權限。
* 你的MYSQL要有寫入該目錄檔案的權限
* 輸出的檔案是以TAB分隔的資料列,不是sql語法。
* 輸出的檔案不能已存在,mysql 會出現檔案已存在的錯誤 ERROR 1086 (HY000): File 'xxx' already exists
* 如果遠端連到資料庫,在客戶端要把資料取出成檔案,可採用mysqldump即可:
mysqldump -u user_name -p -B db_name --tables table_name > your_outputfile.sql
或是
mysql -u user_name -p -B db_name -e "你的SQL SELECT語法" > your_outputfile.sql
錯誤排除
1. 出現錯誤
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
這通常是因為 MySQL 伺服器啟用了 --secure-file-priv 選項,這個選項限制了可以使用的檔案路徑。
mysql> SHOW VARIABLES LIKE 'secure_file_priv';
+------------------+-----------------------+
| Variable_name | Value |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.01 sec)
指定路徑即可
mysql> `col1`, `col2`, `col3` from table limit 0,10 into outfile ' into outfile '/var/lib/mysql-files/my.txt';
2. FILE 是全域的權限
參考資料
[1] Mysql 官網 http://dev.mysql.com/doc/refman/5.0/en/select.html
原文修改 2011-03-21 15:52:42