在同一mysql会话中具有多个查询和重定向的bash脚本

vngu2lb8  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(393)

我的bash脚本查询 mysql 数据库3次,并将每个查询中的标准重定向到一个文件(共3个不同的文件,具有不同的列结构)。
我想让它要求 mysql 密码,因为它是重要的,我没有在脚本或磁盘上的密码。
如何将所有查询和标准输出重定向包含在同一个目录中 mysql 会话以避免3次询问密码?
这就是我现在所拥有的:


# !/bin/bash

mysql -h database.com -u user -p -e "USE database; mysql query1"  > file1
mysql -h database.com -u user -p -e "USE database; mysql query2"  > file2
mysql -h database.com -u user -p -e "USE database; mysql query3"  > file3
bkhjykvo

bkhjykvo1#

你可以用 tee 以及 notee 命令并编写一个查询文件 queries.sql 在一个镜头中调用它:

use database
tee file1
query1
notee
tee file2
query2
notee
tee file3
query3
notee

然后调用它:

mysql -h database.com -u user -p -e "source queries.sql" > /dev/null

相关:
mysql中spool命令的等价物是什么
如何在mysql中运行sql脚本?

7bsow1i6

7bsow1i62#

您可以使用bash提示输入密码,然后将其提供给每个mysql命令:


# !/bin/bash

echo "enter the password for MySQL:"
read -s PASSWD

mysql -h database.com -u user -p$PASSWD -e "USE database; mysql query1"  > file1
mysql -h database.com -u user -p$PASSWD -e "USE database; mysql query2"  > file2
mysql -h database.com -u user -p$PASSWD -e "USE database; mysql query3"  > file3

以下是符合posix的非bash shell静默提示版本:

stty -echo
printf "enter the password for MySQL:"
read PASSWD
stty echo
printf "\n"

相关问题