如何在shell脚本中插入mysql存储过程的结果

时间:2017-12-14 10:25:30

标签: mysql bash shell stored-procedures

我是shell脚本的新手,我想调用MySQL存储过程并将存储过程的结果存储在变量中,并将变量传递给insert查询,以将值存储在数据类型为JSON的另一个表中。 / p>

Shell脚本文件:

selectvar="CALL lead_status_sale(input1,input2,@total,@valid,@data);"

selectvar1="select @total,@valid,@data;"

mysql --user=root --password=xxx db1 << eof 
$selectvar
insertvar = $selectvar1
eof

mysql --user=root --password=xxx db2 << eof 
insert into day values $insertvar;
eof

如果我在进行插入查询时调用存储过程工作正常我得到了ERROR

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@valid @qualified  @sales  @closedwon  @deal   @cold_lead  @business   @ga @ga_valid   @ga' at line 1

1 个答案:

答案 0 :(得分:0)

试试这个: 如果您的SELECT返回超过1个字符串:

#!/bin/bash

selectvar="CALL lead_status_sale(input1,input2,@total,@valid,@data); select @total,@valid,@data;"
insertvar=(`mysql --user=root --password=xxx db1 --execute="${selectvar}" | sed '1d'`)
for i in "${insertvar[@]}"
do
    mysql --user=root --password=xxx db2 --execute="insert into day values ${i};"
done