【问题标题】:Shell script to email results of SQLPlus query using Mailx in AIX在 AIX 中使用 Mailx 通过电子邮件发送 SQLPlus 查询结果的 Shell 脚本
【发布时间】:2011-09-11 03:59:28
【问题描述】:

我有我需要的命令。如果我在提示符下执行这些命令,一切都会按预期进行。 SQLPlus 运行查询,将结果导出到文件,然后 Mailx 将该文件通过电子邮件发送给我。

sqlplus username/pwd@instance
SPOOL /home/sadmin/sqlmail/spool.out
set linesize 2000
set wrap off
@/home/sadmin/sqlmail/query.sql
SPOOL OFF
exit
mail -s "Subject" email@address.com < /home/sadmin/sqlmail/spool.out

但是,我一生都无法弄清楚如何将这些放在 .sh 文件中以便我可以安排它。帮助!?提前谢谢,我敢肯定这很愚蠢。

【问题讨论】:

    标签: shell sqlplus aix mailx


    【解决方案1】:

    使用 shell 'Here' 文档是通常的解决方案,即

     cat MyCommand.sh
     #!/bin/bash  # (or ksh, sh, etc)
     PATH=.../path/to/sqlplusdir:${PATH}
    
    sqlplus username/pwd@instance <<EOS
        SPOOL /home/sadmin/sqlmail/spool.out
        set linesize 2000
        set wrap off
        @/home/sadmin/sqlmail/query.sql
        SPOOL OFF
        exit
    EOS
    mail -s "Subject" email@address.com < /home/sadmin/sqlmail/spool.out
    

    您需要设置 PATH 环境以包含您的 sqlplus 可执行文件的路径。

    然后您需要一个可以访问 cron 工具的用户 ID。你知道如何使用“vi”编辑器吗?当您调用crontab 时,您将查看当前用户计划的作业,并且您需要使用“vi”命令来操作文件。 (可能可以覆盖要使用的编辑器,但不推荐)

    您需要阅读 cron 的手册页,即man cron,您将被称为上面的完整脚本。一个 cron 条目看起来像

    59 23 31 12 * { var=x; export var ; myCommand ; } > /tmp/myWorkDir/myCommand.trace 2>&1 
    
    min
       hr
         day
           mon
              (DayOfWeek)
    

    日期/时间的值可以是逗号分隔的列表 (0,15,30,45)、连字符分隔的范围 (4-6) 或 * 表示所有有效值。

    这会从 myCommand 的 1 次运行中捕获包括 stderr 在内的任何输出到 tmpDir 中的文件中。

    上述的最低版本是

    59 23 12 31 * var=x; export var ; myCommand
    

    然后将任何输出发送到用户的本地邮箱。

    我希望这会有所帮助。

    【讨论】:

    • 我不太关心调度,而是将这些命令放入我可以执行的 .sh 中。在我拥有 .sh 之后,我可以安排它没有问题。如果我只是将这些文件粘贴到 .sh 中并运行它,我最终会得到一个 SQL> 提示符。如何让 SQLPlus 命令在 .sh 中自动执行?
    • 另请注意,在 S.O. 上搜索“sqlplus here document”。显示使用sqlplus -s ... 的其他人。我的经验是使用 Sybase isql,所以当涉及到 sqlplus 的正确参数/选项时,我依赖于其他人的建议。祝你好运。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 2018-12-21
    相关资源
    最近更新 更多