8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Autosys 命令作业未触发 Teradata BTEQ 脚本

Vini 2月前

65 0

我有以下 JIL 配置的自动系统作业insert_job:APP.Ccommand:/NAS_MOUNT/run_bteq.ksh FOLDERNAME SCRIPTNAME.btqmachine:serverA.comowner:Johnprofile:/NAS_MOUNT/.John_profileI...

我有以下 JIL 配置的 autosys 作业

insert_job: APP.C
command : /NAS_MOUNT/run_bteq.ksh FOLDERNAME SCRIPTNAME.btq
machine : serverA.com
owner : John
profile: /NAS_MOUNT/.John_profile

如果我运行该作业,它将无法执行 BTEQ 部分,当我尝试使用所有者权限和源 John 配置文件手动运行时,我就可以毫无问题地执行 BTEQ 脚本。

猫/NAS_MOUNT/run_bteq.ksh

BTEQ_SCRIPT='/NAS_MOUNT/SCRIPTNAME.btq.tmp'
cat /NAS_MOUNT/prebteq.ksh > $BTEQ_SCRIPT
cat SCRIPTNAME.btq >> $BTEQ_SCRIPT
cat /NAS_MOUNT/postbteq.ksh >> $BTEQ_SCRIPT
$BTEQ_SCRIPT
RC=$?
exit $RC

以下是 tmp BTEQ_SCRIPT 的内容

bteq<<EOF
.SET WIDTH 5000
.logon a/username,PWD
select database,user ;
.logoff
.quit
EOF

exit $?

尝试从其他服务器运行,一切正常,但 ServerA 是唯一存在问题

帖子版权声明 1、本帖标题:Autosys 命令作业未触发 Teradata BTEQ 脚本
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Vini在本站《shell》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 这里我们需要根据第 3 列来拆分文件,在第 3 列我们有 9 个唯一值,基于此我们需要拆分成 2 个文件,一个文件包含 4 个,另一个文件包含剩下的 5 个(它基于 n...

    这里我们要求根据第 3 列拆分文件

    在第三列上,我们有 9 个唯一值,基于此,我们需要拆分成 2 个文件,一个文件包含 4 个,另一个文件包含剩余的 5 个(它基于第三列中唯一值的数量,如果我们有 20 个唯一值,我们将拆分成 10 个和 10 个),并且两个文件都应该添加标题

    我们将使用此命令计算唯一值的数量

    awk -F'|' '{print $3}' inputfile.txt | uniq
    

    计算后如何放入两个文件一半的计数应该放在一个文件中,其余的放在另一个文件中

    请提供脚本/cmd

    输入文件

    Header|Name|date
     c|125|ER
     de|126|ER
     fr|127|ER
     xe|128|ER
     A|123|MR
     b|124|MR
     c|125|XR
     de|126|YR
     fr|127|ZR
     xe|128|NR
     A|123|BR
     b|124|BR
     c|125|CR
     de|126|CR
     fr|127|DR
     xe|128|DR
     A|123|ER
     b|124|ER
    

    输出文件 1

    Header |Name | date
     c|125|ER
     de|126|ER
     fr|127|ER
     xe|128|ER
     A|123|ER
     b|124|ER
     A|123|MR
     b|124|MR
     c|125|XR
     de|126|YR
     fr|127|ZR
    

    输出文件 2

    Header|Name|date
    xe|128|NR
     A|123|BR
     b|124|BR
     c|125|CR
     de|126|CR
     fr|127|DR
     xe|128|DR
    
  • 您已经向我们提供了您的数据和现有代码,但是您需要我们帮助解决的代码具体问题是什么?

  • 我需要对几个数据库客户端进行操作,这些客户端有一个静态名称 APPUSR,其中有数字(1,11,12,13 2,21,22,23 3,31,32,33 ...)ID。APPUSR1、APPUSR12、APPUSR3、APPUSR32,....我认为循环

    我需要对多个数据库客户端进行操作,这些客户端有一个静态名称 APPUSR,带有数字(1,11,12,13 2,21,22,23 3,31,32,33 ...)ID。APPUSR1、APPUSR12、APPUSR3、APPUSR32、....

    我认为循环通过十位和其他循环来创建连接名称 -

    #!/usr/bin/tcsh
    
    set echo
    
    foreach envMast  ( `seq 4 ` )
      foreach envClient ( `seq 0 3 ` )     
    if ( "$envClient" == 0) then         
      set envClient = ""   #there is not user 10,20,30 so i blank unit 0 to get envMast 1 2 3 4
    endif
    
    sqlplus APPUSR${envMast}${envClient}/APPUSR${envMast}${envClient}@DB <<-EOT>APPUSR.log
    SELECT USER FROM DUAL;
    exit
    EOT
      end
    end
    

    它运行正常但是仅对 APPUSR1 运行一次。
    也许是一个简单的逻辑错误(我是 tcsh 的新手)但不知道为什么它没有迭代或循环到任何 foreach。

  • 顺便说一句,在每个数据部分的上方和下方各放一行,只包含三个反引号,其他什么都不放,以防止被格式化为 Markdown。(我帮你做了这个

  • 忽略该 sqlplus 命令,您的嵌套 foreach 已正确构建。

    您看到的问题是因为 和 之间的 \'here document\' <<EOT 不起作用 EOUT 。这在 tcsh 中不起作用。(请参阅 Bug 部分 https://linux.die.net/man/1/tcsh )

    您需要找到一种以不同方式构造 sqlplus 命令的方法。也许您可以将这些行移到另一个文件中,然后从 csh 脚本中获取该文件,如下所示:

    foreach envMast  ( `seq 4 ` )
        foreach envClient ( `seq 0 3 ` )     
            if ( "$envClient" == 0) then         
                set envClient = ""   
            endif
    
            source sqlcmd.csh >> APPUSR.log
    
        end
    end
    
  • 那么,应该使用什么样的逻辑来确定哪些内容应该放在哪个输出文件中,以及这些文件中的顺序是什么?(您的示例中的“输出文件 2”按标题字段排序,但输出文件 1 是

  • awk -F'|' '
      NR>FNR { exit }
      NR==1 {
        n=ARGC-2
        if (n<1) { print "not enough output files"; exit }
        for (i=2; i<ARGC; i++) print >ARGV[i]
        next        
      }
      { print >ARGV[ $3 in seen ? seen[$3] : ( seen[$3]=(++i%n)+2 ) ] }
    ' inputfile outputfile1 outputfile2
    

    将输入文件和一个或多个输出文件名作为 中的参数传递 ARGV 。(输出文件将具有索引 2 , 3 ,..., ARGC-1 。)

    • NR>FNR - 不再读取输入文件,因此完成
    • NR==1 - 保存输出文件的数量以 n 供日后使用(如果 n < 1 则中止)然后将标题写入每个输出文件
    • 在每个以下输入行上:
      • if $3 has already been seen, select its associated output file (i.e. ARGV[seen[$3]] )
      • else, use modular arithmetic on a counter to associate $3 with index of "next" output file, and select that
      • print the line to the selected file

    赋值周围的括号可以避免 seen[$3] awk 的 busybox 版本的错误解析。

    适用于任何(小)正数个输出文件(如果太多,awk 将用尽文件句柄)。

    对于您的示例输入,此代码将拆分为:

    输出文件1

    Header|Name|date
     A|123|MR
     b|124|MR
     de|126|YR
     xe|128|NR
     c|125|CR
     de|126|CR
    

    输出文件2

    Header|Name|date
     c|125|ER
     de|126|ER
     fr|127|ER
     xe|128|ER
     c|125|XR
     fr|127|ZR
     A|123|BR
     b|124|BR
     fr|127|DR
     xe|128|DR
     A|123|ER
     b|124|ER
    

    通过 3 个输出文件,它提供:

    Header|Name|date
     c|125|ER
     de|126|ER
     fr|127|ER
     xe|128|ER
     de|126|YR
     A|123|BR
     b|124|BR
     A|123|ER
     b|124|ER
    
    Header|Name|date
     A|123|MR
     b|124|MR
     fr|127|ZR
     c|125|CR
     de|126|CR
    
    Header|Name|date
     c|125|XR
     xe|128|NR
     fr|127|DR
     xe|128|DR
    
返回
作者最近主题: