首页 > 解决方案 > as400 acsbundle.jar IBM

问题描述

我正在研究 AS400。我对这个工具完全陌生。

当我启动IBM 工具界面时,我可以单击一个链接来启动另一个允许我执行 SQL 脚本的窗口。

然后我可以执行 1 个命令,然后执行一个 SQL 请求。

第一个命令(根据我的理解)允许我过滤数据,而第二个命令是一个基本的 SQL 请求。

我希望能够直接在命令行中使用 jar执行这 2 个命令。

我试图做如下:

java -jar /Applications/IBMiAccess/acsbundle.jar /plugin=rmtcmd /cmd="call myLib/myProg '20200706 20200708 10047'" /system=my.ip.address

java -jar /Applications/IBMiAccess/acsbundle.jar /plugin=cldownload /system=my.ip.address /clientfile=/Users/MYUSERNAME/Downloads/test.xlsx /sql="SELECT * FROM MYDB.MYTABLE" /userid=MYUSERID

第一个命令说:程序已正确执行,但是当我尝试下载结果(使用第二个命令)时,它不是预期的......更糟糕的是,我什至可以在没有任何参数的情况下执行程序,它说程序已执行一般。当我打开我的文件时,它只给我当天的数据:/

因此,如果有人可以帮助我,将不胜感激!非常感谢 :)

标签: javaibm-midrange

解决方案


我找到了 2 个解决方案:

第一个是使用插件 rss。如果没有人可以帮助您了解以前的 lib / prog 到底是做什么的,那么您可以这样做:

  for indexArray in "${!ips[@]}"
  do
    nameFile="${workingFolder}""${warehouse[$indexArray]}".csv
    java -jar $pathIBM/acsbundle.jar /system="${ips[$indexArray]}" /plugin=logon /USERID=${USERNAME} /PASSWORD=${PASSWORD}
    java -jar $pathIBM/acsbundle.jar /system=${ips[$indexArray]} /plugin=rss /sql="CALL MY_LIB.MY_PROG(${date28DaysAgos}, ${todayDate},${store})" /autorun=1 &
    pid=$!
    sleep 30
    kill -9 $pid
    java -jar $pathIBM/acsbundle.jar /plugin=cldownload /system="${ips[$indexArray]}" /clientfile="${nameFile}" /sql="SELECT * FROM MYDB.MYTABLE" /userid=${USERNAME}
  done

基本上,此解决方案允许您使用 rss 插件。根据您的库的执行时间(CALL MYPROG.MYLIB您应该sleep在终止进程之前增加时间。

下一个解决方案,当然更干净,将是有一个很好的 SQL 请求,你知道你需要什么,然后:

for indexArray in "${!ips[@]}"
do
    nameFile="${workingFolder}""${warehouse[$indexArray]}".csv
    java -jar $pathIBM/acsbundle.jar /system="${ips[$indexArray]}" /plugin=logon /USERID=${USERNAME} /PASSWORD=${PASSWORD}
    java -jar $pathIBM/acsbundle.jar /plugin=cldownload /system="${ips[$indexArray]}" /clientfile="${nameFile}" /sql="${sql}" /userid=${USERNAME}
done

推荐阅读