在bash中将stdout重定向到mysql

gwo2fgha  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(349)

我可以执行mysql传入一个文件,如下所示。

mysql -u username -p < some_file

在bash脚本中,我有一个函数,它响应我要传递到bash脚本中同一命令的输出。

some_function() {
    echo "Some SQL"
}

如何使用管道/重定向将输出传递到mysql?
我试过以下方法,但没有这样的文件或目录,就失败了。如何使用这里函数的输出。

mysql -u username -p < some_function
apeeds0o

apeeds0o1#

无需使用管道或重定向在这种情况下,您可以直接使用 -e 执行某些sql命令的选项:

mysql -u username -p -e "SQL/MySQL commands"

特定数据库的示例:

mysql -u username -p -e "use database_name; SHOW tables"
mysql -u username -p -e "SHOW tables" database_name

您还可以捕获命令或函数的输出,并将其作为参数传递,如下所示:

sql_command="$(your_function)"
mysql -u username -p -e "${sql_command}" database_name;

如果您真的想使用管道或重定向(但我认为在这种情况下没有意义):

$ mysql -u root -p database_name < <(echo "SHOW TABLES") # redirection
$ mysql -u root -p database_name <<< "$(echo "SHOW TABLES")" # another way to use redirection
$ echo "SHOW TABLES"|mysql -u root -p database_name # pipe

相关问题