首页 > 解决方案 > 从 bat 文件或 Jupyter Notebook 运行 Java 实用程序

问题描述

试图从 Domo 编写一些下载实用程序。它们以 jar 文件的形式提供 CLI。我可以从实用程序中正常工作,但我正在尝试编写脚本以按计划运行。加载 jar 文件可以正常工作,但无法像从 CMD 交互式运行它时那样运行后续命令。

java -jar C:\domo\java\domoUtil.jar 
&& 
connect -s yourdomain.domo.com -t mytokenhere
&&
query-data -i datasetid -sql "SELECT * FROM `hs_users_raw`" -xf test3.csv

帮助将不胜感激,Java新手,所以不知道为什么我似乎无法让它工作..

标签: javajupyter-lab

解决方案


您在这里尝试解决的问题似乎是通过 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

告诉外壳执行以下操作:

  1. 运行外壳命令 A
  2. 如果 A 返回零返回码,则运行 shell 命令 B
  3. 如果 B 返回零返回码,则运行 shell 命令 C

这对您不起作用,因为connect并且query-data不是 shell 命令。相反,它们是 CLI 运行的命令。此外,您不想等待 CLI 返回一个返回码(即完成),然后再向它发出连接和查询数据命令。

Domo CLI(可能)希望从其标准输入中读取命令。因此,以下可能作为替代方案(使用 Linux shell):

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 手册所推荐的。


推荐阅读