1. mysql --help
-h : ip/host
-u : 用戶名
-p : 密碼
-P : 端口
-D : 指定庫
-e : 指定sql語句
-t : 查詢結果按表格展示
-c, --comments : Preserve comments. Send comments to the server. The default is --skip-comments (discard comments), enable with --comments.
(注釋也顯示出來, 沒有此項,存儲過程創建時會丟失原有注釋)
-N : --skip-column-names Don't write column names in results.
2. mysql執行完查詢,結果是一行。如何截取某一列的值?
result=`mysql -h -P -u -p -D -N -e"{query}"` echo $result echo $result | awk '{print $1}' ##獲取第一列的值,默認是tab分隔符 var1=`echo $result | awk '{print $1}'`
3. sql文件可以在連接mysql命令后,通過source + 文件名命令執行成功
此時要注意delimiter的問題,默認的delimiter為; (mysql --help)
若一個存儲里含有多個; 會被截斷成幾段分開執行,而不是一個完整的存儲
- 可以在開頭修改分隔符為 //,執行完畢后修改回去
delimiter // -- 這里是你的存儲開始 CREATE PROCEDURE `rp_patient_indicator_result`() BEGIN insert into rp_dag_sdu_log(run_time,task_number,status,result_code,result_msg,create_time) values (DATE_FORMAT(sysdate(),'%Y-%m-%d-%H'),vv_task_number,0,code,msg,SYSDATE()); -- ----------------- // delimiter ;
參考: https://blog.csdn.net/yuxin6866/article/details/52722913
3. source的等價方式
- mysql -h$Mysql_server -u$Mysql_user -p$Mysql_pswd -P$Mysql_port連接后,source + sql文件
- mysql -h$Mysql_server -u$Mysql_user -p$Mysql_pswd -P$Mysql_port -D$executeDB -c <"${sql文件路徑}"
- mysql -h$Mysql_server -u$Mysql_user -p$Mysql_pswd -P$Mysql_port -D$executeDB -e"${sql語句存在變量里}"