YOLO813

Shell脚本直接操作Mysql

    最近有个需求,需要隔段时间在mysql数据库中更改某些字段,之前都是使用python脚本来操作的,但是总感觉隔着一层东西,有点麻烦,于是想尝试一下直接在linux中使用shell脚本操作mysql数据库。

    先说结论,可以!这个很重要,否则就没必要去探索了。

    还是先贴上代码

#!/bin/sh
mysql_engine=`which mysql`;
$mysql_engine -uroot -proot <<EOF  1>/root/test.log;
use world_database;
UPDATE NBA_table SET name="John" WHERE id=1;
EOF
exit


    不得不说,这个代码量是真的少,写下来就一个字:丝滑!

    #!/bin/sh这是固定格式,如果将mysql的执行绝对路径写出来,第二行代码也可以省略掉,$调用变量,利用符号EOF(end of file)将后续的输入作为shell的输入(<<EOF 表示开始),中间的3行代码就是在linux中操作数据库的常规命令,需要注意不要使用·(键盘ECS下面的符号键),这在shell脚本中有特殊含义,最后再一个EOF跳回到主shell中,返回的代码结果会保存到test.log中,再写一个crontab脚本定时运行即可!

    关于这个EOF,我们可以这么玩,

    cat 命令可以读取文件内容,其操作对象是文件,但是上面我使用的是用户输入。

    我们知道 cat 的操作对象是文件,但是上方例子中 cat 的操作对象不是文件,而是用户输入;那么我们可以这样理解上方的例子:先在文件 file 中输入 “Hello”,再用 cat file 输出其中的内容。也就是说我们可以用一个文件来替代”<<EOF EOF”。反过来说,如果操作命令中的文件是输入对象,也可以用”<<EOF EOF” 来替代的。

 


参考:
https://www.cnblogs.com/Andya/p/12524370.html