需求:
1. 執行某 SQL 的結果;
2. 將結果導出到 csv文件;
3. 通過命令行執行;
mysql -A db_name -h host_name -u user_name -p -ss -e "SELECT * FROM table_name LIMIT 100;" | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > apps.csv
sed 部分內容可以省略 (具體參數我還沒弄明白,大意是設定 csv文件的分隔符等)
-A 指定數據庫;
-h 指定ip,遠程數據庫需要,導出本地數據庫可以省略;
-u 用戶名;
-p 密碼;
-ss 指定導出的結果是否包含列名;
-e 后面加執行的 sql 語句 (e -> execute);
簡單寫法如下:
mysql -A db_name -h host_name -u user_name -p -e "SELECT * FROM table_name LIMIT 100;" > apps.csv
注意:
在假設執行的 sql中包含關鍵字,在 windows下可以參考 mysql的用法,加上 ``[tab鍵],如:
SELECT `key` FROM `order`;
但在 linux下就需要對 ``[tab鍵] 進行轉義,使用‘\’,如下:
SELECT \`key\` FROM \`order\`;
完整如下:
mysql -A db_name -h host_name -u user_name -p -e "SELECT \`key\` FROM \`order\` LIMIT 100;" > apps.csv