Я ищу инструмент командной строки для выполнения запросов к Amazon Athena.
Он работает с JDBC, используя драйвер com.amazonaws.athena.jdbc.AthenaDriver
, но я не нашел ни одного инструмента командной строки, который бы с ним работал.
Я ищу инструмент командной строки для выполнения запросов к Amazon Athena.
Он работает с JDBC, используя драйвер com.amazonaws.athena.jdbc.AthenaDriver
, но я не нашел ни одного инструмента командной строки, который бы с ним работал.
Расширение предыдущего ответа от @MasonWinsauer. Требуется bash и jq.
#!/bin/bash
# Athena queries are fundamentally Asynchronous. So we have to :
# 1) Make the query, and tell Athena where in s3 to put the results (tell it the same place as the UI uses).
# 2) Wait for the query to finish
# 3) Pull down the results and un-wacky-Jsonify them.
# run the query, use jq to capture the QueryExecutionId, and then capture that into bash variable
queryExecutionId=$(
aws athena start-query-execution \
--query-string "SELECT Count(*) AS numBooks FROM books" \
--query-execution-context "Database=demo_books" \
--result-configuration "OutputLocation"="s3://whatever_is_in_the_athena_UI_settings" \
--region us-east-1 | jq -r ".QueryExecutionId"
)
echo "queryExecutionId was ${queryExecutionId}"
# Wait for the query to finish running.
# This will wait for up to 60 seconds (30 * 2)
for i in $(seq 1 30); do
queryState=$(
aws athena get-query-execution --query-execution-id "${queryExecutionId}" --region us-east-1 | jq -r ".QueryExecution.Status.State"
);
if [[ "${queryState}" == "SUCCEEDED" ]]; then
break;
fi;
echo " Awaiting queryExecutionId ${queryExecutionId} - state was ${queryState}"
if [[ "${queryState}" == "FAILED" ]]; then
# exit with "bad" error code
exit 1;
fi;
sleep 2
done
# Get the results.
aws athena get-query-results \
--query-execution-id "${queryExecutionId}" \
--region us-east-1 > numberOfBooks_wacky.json
# Todo un-wacky the json with jq or something
# cat numberOfBooks_wacky.json | jq -r ".ResultSet.Rows[] | .Data[0].VarCharValue"
Начиная с версии 1.11.89 инструмент командной строки AWS поддерживает операции Amazon Athena.
Во-первых, вам нужно будет привязать политику AmazonAthenaFullAccess к роли IAM вызывающего пользователя.
Затем, чтобы начать выполнение запросов, вы будете использовать команду start-query-execution
следующим образом:
aws athena start-query-execution
--query-string "SELECT * FROM MyDb.MyTable"
--result-configuration "OutputLocation"="s3://MyBucket/logs" [Optional: EncryptionConfiguration]
--region <region>
Это вернет объект JSON QueryExecutionId, который можно использовать для получения результатов запроса с помощью следующей команды:
aws athena get-query-results
--query-execution-id <id>
--region <region>
Который также возвращает объект JSON результатов и метаданных.
Дополнительную информацию можно найти в официальной документации AWS.
Надеюсь это поможет!
Вы можете попробовать AthenaCLI, клиент командной строки для службы Athena, который может выполнять автозаполнение и подсветку синтаксиса и является гордым членом сообщества dbcli.
https://github.com/dbcli/athenacli