通过cron将参数传递给SQL脚本

时间:2015-07-29 09:07:36

标签: mysql shell cron

我有一个shell脚本,它运行一些sql,如下所示:

DB_USER="xxx"
DB_PASSWORD="yyy"

/usr/bin/mysql -u $DB_USER -p$DB_PASSWORD < /home/xylar/tasks/users.sql

在sql文件中,我使用以下命令将用户导出到txt文件中:

SELECT
    'id',
    'name',
    'status'
UNION ALL SELECT a.* FROM(SELECT
    id,
    name,
    status
FROM
    users
)a

INTO OUTFILE '/tmp/YYYYMMDD_users_000INC.txt'
    FIELDS TERMINATED BY '|' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'

我每月都会通过cron任务运行脚本:

0 0 1 * * /home/xylar/tasks/export.sh

sql文件中有两个变量,YYYMMDD和INC,有没有办法将它们作为变量传递?

  • YYYYMMDD当前日期
  • INC一个增量整数,每次运行脚本时都需要增加1

1 个答案:

答案 0 :(得分:0)

如果您需要当前日期代替YYYYMMDD,您可以从SQL脚本本身 - 到现在()函数获取它。
对于增量编号 - 您也可以使用您必须为此目的创建的新表的AUTO_INCREMENT字段在SQL中自己生成它。

但是如果需要传递特定的YYYYMMDD和INC,则必须先“预处理”原始SQL,然后再将其放入“mysql”cmd。如何做到这一点你可以阅读here