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语句存在变量里}"