由于我们的bash脚本通过变量将mariadb语句作为单行使用,我们在使用分隔符时遇到了问题。有没有一种方法可以在单行语句上设置分隔符?
while read -r tmp;
do
chomped_line=${tmp}
myOut+=("$chomped_line")
done < <(mysql -u myUn -pmyPw -h myHost -D myDb --batch --xml<<<${mySqlVar})
在多行上用作脚本的mariadb
delimiter |
select @myCount .... from table WHERE (myVal='valA' AND active=1); IF (@myCount > 0) THEN start transaction; .....; commit; END IF|
通过${mySqlVar}传递时不作为单行工作,在delimiter |
之后停止
delimiter | select @myCount .... from table WHERE (myVal='valA' AND active=1); IF (@myCount > 0) THEN start transaction; .....; commit; END IF|
在MySQL/MariaDB中,DELIMITER
仅用于构建存储例程。扔那个。
命令mysql
非常乐意接受由;
分隔的多个SQL语句。
$ echo "SELECT @x := NOW(); SELECT @x+INTERVAL 23 HOUR;" | mysql -u me
@x := NOW()
2018-12-07 11:28:51
@x+INTERVAL 23 HOUR
2018-12-08 10:28:51
不过,我建议您使用SQL创建一个文件并输入它:
$ mysql -u me < script.sql
DELIMITER
命令后面必须跟一行换行符。您不能在随后使用该分隔符的同一行上定义该分隔符。
您可能想要使用mysql --delimiter ...
,这样就不必将DELIMITER
命令作为输入的一部分。
提示:通过运行mysql --help
或阅读其文档,您可以学到很多东西。