Запустите утилиту Java из bat-файла или Jupyter Notebook - PullRequest
0 голосов
/ 06 апреля 2020

Попытка написать несколько утилит для скачивания из Domo. Они предоставляют CLI в виде файла JAR. Я могу нормально работать с утилитой, но я пытаюсь сделать так, чтобы она работала по расписанию. Он прекрасно работает для загрузки файла 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 , так что не уверен, почему я не могу заставить это работать ..

1 Ответ

0 голосов
/ 06 апреля 2020

Похоже, что проблема, которую вы пытаетесь решить, состоит в том, чтобы запустить некоторые скриптовые команды 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 возвращает нулевой код возврата, запустить команду оболочки B
  3. если B возвращает нулевой код возврата, запустите команду оболочки C

Это не работает для вас, потому что connect и query-data не являются командами оболочки. Скорее, это команды для запуска CLI. Кроме того, вы не хотите ждать, пока CLI вернет код возврата (т. Е. Завершен), прежде чем отправлять ему команды connect и query-data.

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.

...