【问题标题】:Passing parameters into SQL script via cron通过 cron 将参数传递给 SQL 脚本
【发布时间】:2015-10-20 04:05:01
【问题描述】:

我有一个运行以下 sql 的 shell 脚本:

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

【问题讨论】:

  • 仅出于个人兴趣:如果脚本每月只有一次符文,为什么还需要日期和递增数字?所以 YYYYMM 就够了吗?
  • @bish 导出内容被发送到客户端,这是请求的格式。

标签: mysql shell cron


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 2022-01-13
    • 2019-02-08
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多