trino --execute: Выполнить SQL из командной строки: форматы вывода, выбор кат
Выполнить SQL из командной строки: форматы вывода, выбор каталога
Вот шпаргалка по trino --execute. Команда — мой основной инструмент для быстрых проверок, отладки и автоматизации. Использую её десятки раз в день.
Базовый синтаксис
Самая простая форма команды выполняет SQL-запрос на указанном сервере.
trino --server http://trino.prod:8080 --execute "SELECT 1"
Разберём по частям:
trino— клиент Trino.--server— обязательный флаг. Указывает адрес координатора Trino.--execute— ключевой флаг. Всё, что в кавычках после него, передаётся на сервер как SQL-запрос."SELECT 1"— сам запрос. Кавычки обязательны, особенно если в запросе есть пробелы.
Полезные флаги
--catalog и --schema
Позволяют сразу задать контекст, не прописывая его в SQL. Экономят время и делают команду чище.
trino --server http://trino.prod:8080 --catalog hive --schema prod_logs \
--execute "SELECT COUNT(*) FROM nginx_access WHERE dt = CURRENT_DATE"
Без флагов пришлось бы писать FROM hive.prod_logs.nginx_access.
--output-format
Критически важен для автоматизации. По умолчанию вывод — псевдографика (ALIGNED). Для скриптов нужен машинно-читаемый формат.
# Для чтения человеком (таблица)
trino ... --output-format ALIGNED --execute "SHOW TABLES"
# Для передачи в jq, awk или другой скрипт (CSV без заголовков)
trino ... --output-format CSV_HEADER_UNQUOTED --execute "SELECT pod, restarts FROM k8s.pods"
# Для отладки JSON-структур (один JSON на строку)
trino ... --output-format JSON --execute "SELECT * FROM events LIMIT 5"
Типичные сценарии
1. Проверка состояния системы перед деплоем Запускаю из CI/CD пайплайна, чтобы убедиться, что все таблицы-витрины актуальны.
trino --server $TRINO_SERVER --catalog hive --schema monitoring \
--output-format CSV_HEADER_UNQUOTED \
--execute "
SELECT table_name, max(event_time) as last_update
FROM datasource_metrics
WHERE dt = CURRENT_DATE
GROUP BY 1
HAVING max(event_time) < CURRENT_TIMESTAMP - INTERVAL '1' HOUR
"
Если вывод не пустой — значит, есть отстающие таблицы, деплой нужно остановить.
2. Быстрый поиск проблемного пода в Kubernetes Когда нужно найти под, который постоянно падает, не заходя в kubectl.
trino --server http://trino.prod:8080 --catalog k8s --schema default \
--execute "
SELECT namespace, pod, restarts
FROM pods
WHERE restarts > 5
ORDER BY restarts DESC
"
Частые ошибки
Забытый --server. Клиент попытается подключиться к localhost:8080 и упадёт с ошибкой соединения. Всегда проверяйте этот флаг первым.
Неправильный формат вывода для скриптов. Если вы парсите вывод через awk или cut, а используете формат по умолчанию (ALIGNED), скрипт сломается на первом же пробеле в данных. Всегда явно указывайте --output-format CSV_HEADER_UNQUOTED или подобный для автоматизации.