我有一个 bash 脚本,负责查询数据库并将结果通过管道传输到文件:
date=`date +"%Y/%m/%d"`
/usr/bin/mysql -u $db_user -p$db_pass -h $db_name $db_schema << MYSQLEOF > $output_file
select *
from table
where date = $date
MYSQLEOF
现在将该项目扩展到其他领域,为了可重用性/正交性,我想将查询存放在它自己的文件中,并使用如下内容进行调用:
cmd=`echo $sql_file`
/usr/bin/mysql -u $db_user -p$db_pass -h $db_name $db_schema -e "$cmd" > $output_file
sql文件:
select *
from table
where date = $date
我无法找出如何(在 bash 中)执行此操作,同时仍然能够在 sql 文件中拥有和调整变量($date)。将 .sql 文件回显到 bash 变量中,我无法让“$date”不被视为文字字符串。
bash 中有解决方案吗?或者我应该研究像 perl 这样的东西来处理这个问题?
最佳答案
使用 mySQL CLI 的 source
命令。
queryfile=my_query.sql
/usr/bin/mysql -u $db_user -p$db_pass -h $db_name $db_schema -e "source $queryfile" > $output_file
关于mysql - 从 bash 运行 mysql 查询;其中查询存储在单独的文件中,并在 bash 中设置/变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13404428/