尝试从Domo编写一些下载实用程序的脚本。它们以jar文件的形式提供CLI。我可以从实用程序中很好地处理它,但我正在尝试将它编写为按时间表运行。它可以很好地加载jar文件,但不能像从CMD交互式运行它那样运行后续命令。
java -jar C:domojavadomoUtil.jar
&&
connect -s yourdomain.domo.com -t mytokenhere
&&
query-data -i datasetid -sql "SELECT * FROM `hs_users_raw`" -xf test3.csv
如果我是java新手,我将不胜感激,所以不确定为什么我似乎不能让它工作。。
您在这里试图解决的问题似乎是通过Domo CLI运行一些脚本化的Domo命令。
这样做的方法是将要运行的命令放入脚本文件中,然后使用-script
选项来运行它
例如,将以下内容放入一个名为/path/to/myscript.domo
的文件中。
connect -s yourdomain.domo.com -t mytokenhere
query-data -i datasetid -sql "SELECT * FROM `hs_users_raw`" -xf test3.csv
然后使用domoUtil.jar
运行脚本,如下所示:
java -jar domoUtil.jar -script /path/to/myscript.domo
CLI工具的文档中对此进行了解释。
您当前方法不起作用的原因是&&
没有按您的意愿执行。事实上
A && B && C
告诉shell执行以下操作:
- 运行shell命令A
- 如果A返回零返回代码,请运行shell命令B
- 如果B返回零返回代码,则运行shell命令C
这对您不起作用,因为connect
和query-data
不是shell命令。相反,它们是用于CLI运行的命令。此外,在向CLI发出连接和查询数据命令之前,您不希望等待CLI返回返回代码(即完成(。
Domo CLI(可能(希望从其标准输入中读取命令。因此,以下可能可以作为替代方案(使用Linux外壳(:
java -jar domoUtil.jar <<EOF
connect -s yourdomain.domo.com -t mytokenhere
query-data -i datasetid -sql "SELECT * FROM `hs_users_raw`" -xf test3.csv
EOF
使用Windows批处理脚本语言可能也有类似的功能。
无论哪种方式,-script
方法都是Domo手册所建议的。