mysql或mariadb是否可以是带有分隔符的单行语句



由于我们的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或阅读其文档,您可以学到很多东西。

相关内容

  • 没有找到相关文章

最新更新