我可以执行如下所示的mysql传递文件。
mysql -u username -p < some_file
在bash脚本中,我有一个函数可以回显我想传递给bash脚本中相同命令的输出。
some_function() {
echo "Some SQL"
}
如何使用管道/重定向将输出传递到mysql中?
我尝试了以下操作,但是失败,没有这样的文件或目录。我该如何在这里使用函数的输出。
mysql -u username -p < some_function
答案 0 :(得分:0)
在这种情况下,无需使用管道或重定向,您可以直接使用-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